[#02][BOJ #9663] N-Queen https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 수도코드 배운 코드 # 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수? = ans def dfs(n): # n : 행 번호 global ans # 종료 조건 : n == N if n == N: ans += 1 return for j in range(N): # 열, 대각선 모두 queen 이 없는 경우 go if v1[j] == v2[n + j] == v3[n - j] == 0: v1[j] = v2[n + j] .. 2024. 3. 22. [#01][BOJ #15649] N과 M (1) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 배운 코드 def dfs(n, lst): # 종료 조건(n에 관련) 처리 + 정답 처리 if n == M: # M개의 수열을 완성 ans.append(lst) return # 하부 단계(함수) 호출 for i in range(1, N + 1): if v[i] == 0: # 선택하지 않은 숫자인 경우 추가 v[i] = 1 dfs(n + 1, lst + [i]) v[i] = 0 N, M = map(.. 2024. 3. 19. 백트래킹 공부 시작 !! 이제 처음 한다는건 아니지만.. 전부터 언젠간 본격적으로 백트래킹 공부를 해야겠다고 생각하고 있었다. ㅎㅎ 그 시작이 오늘이었을 뿐 !! 오늘 백트래킹 배웠는데 진짜 너무 코드를 못짜겠어서, 구글링도 해보고 유튭도 뒤져보는데 유튭에 백트래킹 문풀 플리가 있어서 그걸 하루에 하나씩만이라도 하면 괜찮겠다는 생각이 들었다. 그래서 바로 시작. 백트래킹 공부는 우선 문제풀이 영상을 정독하면서 코드를 따라 쓰면서 이해하고, 그 뒤에 그 코드를 일절 보지 않고 혼자 풀어볼 것이다. 그걸 실패했다? 그럼 혼자 풀 수 있을 때까지 그걸 반복할거다. 그래서 게시글 올릴 때에는 문제 링크와 설명 들었던 해설 코드, 내가 혼자서 풀어낸 코드, 제출 결과 이렇게 올릴 예정이다! 그러면 오늘부터 백트 아자아자 화이팅이다!! 2024. 3. 19. 이전 1 다음 728x90 반응형