Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Tableau
- Kafka
- 데이터 시각화
- Selenium
- 팀 프로젝트
- 코딩테스트
- 코테 연습
- 슈퍼셋
- airflow
- Til
- VPC
- 데이터 엔지니어
- superset
- AWS
- cloud platform
- 코딩 테스트
- Snowflake
- beuatifulsoup
- Spark
- PCCP
- HTML
- GCP
- SQL
- django
- 데브코스
Archives
- Today
- Total
주니어 데이터 엔지니어 우솨's 개발일지
코딩 테스트(Python) n-queen 본문
문제 설명
가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다.
예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은 서로를 한번에 공격 할 수 없습니다.
체스판의 가로 세로의 세로의 길이 n이 매개변수로 주어질 때, n개의 퀸이 조건에 만족 하도록 배치할 수 있는 방법의 수를 return하는 solution함수를 완성해주세요.
제한사항
- 퀸(Queen)은 가로, 세로, 대각선으로 이동할 수 있습니다.
- n은 12이하의 자연수 입니다.
def dfs(queen, n, row):
# n x n 크기의 체스판에서 퀸을 배치할 수 있는 방법의 수를 반환하는 함수
count = 0
if n == row: # 모든 퀸을 배치했다면
return 1 # 1개의 valid solution을 찾았으므로 1을 반환
# 각 행(row)에 대해 퀸을 배치할 열(col)을 찾는다
for col in range(n):
queen[row] = col # 현재 행(row)의 퀸을 col에 배치
# 이전에 배치된 퀸들과 충돌이 있는지 확인
for x in range(row):
# 같은 열에 퀸이 있다면 충돌
if queen[x] == queen[row]:
break
# 대각선에 퀸이 있다면 충돌
elif abs(queen[x] - queen[row]) == (row - x):
break
else:
# 충돌이 없다면 다음 행(row)에 퀸을 배치하는 재귀 호출
count += dfs(queen, n, row + 1)
return count # 유효한 배치의 경우를 반환
def solution(n):
queen = [0] * n # 퀸의 위치를 저장할 리스트 (각 인덱스는 행을 의미)
return dfs(queen, n, 0) # 첫 번째 행부터 시작하여 퀸 배치
'코딩 테스트' 카테고리의 다른 글
코딩 테스트(Python) 가장 먼 노드 (1) | 2024.12.17 |
---|---|
코딩 테스트(Python) 2019 카카오 개발자 겨울 인턴십 불량 사용자 (0) | 2024.12.17 |
코딩 테스트(Python) 2021 KAKAO BLIND RECRUITMENT 순위 검색 (0) | 2024.12.17 |
코딩 테스트(Python) 빛의 경로 사이클 (0) | 2024.12.17 |
코딩 테스트(Python) 교점에 별 만들기 (0) | 2024.12.17 |