티스토리 뷰
오늘 리뷰할 문제는 N queens 2이다.
https://leetcode.com/problems/n-queens-ii/
N-Queens II - LeetCode
Can you solve this real interview question? N-Queens II - The n-queens puzzle is the problem of placing n queens on an n x n chessboard such that no two queens attack each other. Given an integer n, return the number of distinct solutions to the n-queens
leetcode.com
이번 문제는 사실 지난 문제보다 쉬워졌다고 보면 되는데, 왜냐하면 지난 문제에서 출력하는게 체스판의 상태였다면. 이번 문제에서는 경우의 수를 출력하는 것이기 때문이다.
51번 n queens를 푼 코드를 가져와서, 경우의 수를 출력하게만 바꿨다.
from typing import List
class Solution:
def totalNQueens(self, n: int) -> int:
def solve(row: int, current_status: List[str]) -> int:
if row == n:
return 1
res = []
for col in range(n):
available = True
for r in range(row):
if current_status[r][col] == "Q":
available = False
break
if col + row - r < n and current_status[r][col + row - r] == "Q":
available = False
break
if col - row + r >= 0 and current_status[r][col - row + r] == "Q":
available = False
break
if not available:
continue
current_row = "." * col + "Q" + "." * (n - col - 1)
res.append(current_status + [current_row])
final_result = 0
for status in res:
final_result += solve(row + 1, status)
return final_result
return solve(0, [])
assert Solution().totalNQueens(4) == 2
assert Solution().totalNQueens(1) == 1
이렇게 하니, 51번 문제와 비슷한 runtime, memory 분포를 보이는데.
이건 지난번에 리뷰한 것 처럼 available을 set으로 관리하고, 체크하면 줄어드는 부분으로 보인다.
반응형
'개발 > 알고리즘' 카테고리의 다른 글
[leetcode 매일 풀기] 65. valid number (0) | 2023.12.07 |
---|---|
[leetcode 매일 풀기] 60 permutation sequence (2) | 2023.12.06 |
[leetcode 매일 풀기] 51. n queens (0) | 2023.12.04 |
[leetcode 매일 풀기] 44. wildcard matching (1) | 2023.12.03 |
[leetcode 매일풀기] 42 trapping rain water (1) | 2023.12.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- word ladder 2
- datalakehouse
- text justification
- sudoku solver
- Python
- binary tree maximum path sum
- slay the spire에 진심인편
- scramble string
- 개발자 글쓰기
- leetcode 매일 풀기
- mlse
- leetcode
- valid number
- distinct subsequences
- 글또 10기
- otel
- leetcode 매일풀기
- wildcard matching
- 알고리즘
- palindrome partitioning 2
- maximum rectangle
- 가상면접 사례로 배우는 대규모 시스템 설계
- substring with concatenation of all words
- 회고
- first missing positive
- hard mode challenge
- permutation sequence
- best time to buy and sell stock 3
- longest valid parentheses
- n queens 2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함