2024/07/17 4

1227. [S/W 문제해결 기본] 7일차 - 미로2(DFS, BFS)

문제: 무단 배포 금지로 인해 사이트 주소로 남깁니다.https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14wL9KAGkCFAYD SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 정답 코드:T = 10 #테스트 케이스from collections import dequefor _ in range(T): answer = 0 dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] r = 0 c = 0 test_case = int(input()) maze = [list(input(..

문제 풀이/SWEA 2024.07.17

N-Queen 문제와 백 트래킹

1. N-Queen 문제란? (link) N*N 체스판에 N개의 퀸을 배치할 수 있는 경우의 수를 센다.퀸은 상하좌우, 대각선 방향으로 거리 제한 없이 이동할 수 있다.N=8인 경우, 경우의 수는 다음과 같다.64 * 63 * ... * 57 = 178,462,987,637,760C 기준 1초에 1억 번을 연산하므로 모든 경우의 수를 탐색하는데 약 20.6시간이 소요된다. 2. 백 트래킹필요없는 경우를 가지치기(pruning)함으로써 시간복잡도를 줄이는 방법을 백트래킹이라고 한다.       파이썬 코드:def nqueen(n): """ visited 의 인덱스는 행, 값은 열을 나타낸다. (1, 3)에 놓은 경우, visited[1] = 3 으로 표현하겠다는 것. 예시) n=4 이..

알고리즘 2024.07.17

reverse iterator등의 Iterator 유의점

필자는 코드 작성 중, 말이 안되는 곳에서 오류가 발생하는 것을 확인했다.이해를 돕기 위해 문제되는 곳만 쉽게 코드를 짠 코드 예시를 가져왔다. 예시 1a = [[1,2,3,4],[5,6,7,8]]# b에다가 a의 reverse를 넣고b = reversed(a)#b가 잘 들어갔는지 출력한 후#print(list(b))#zip함수를 통해 원하는 출력값 도출c = list(zip(*b))print(c)  예시 2a = [[1,2,3,4],[5,6,7,8]]# b에다가 a의 reverse를 넣고b = reversed(a)#b가 잘 들어갔는지 출력한 후print(list(b))#zip함수를 통해 원하는 출력값 도출c = list(zip(*b))print(c) 예시 1)에서 print(c)의 출력값은 [(5, 1..

파이썬 2024.07.17

94. 타겟 넘버(재귀를 통한 DFS)

문제 설명n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1-1+1+1 = 3+1+1+1-1+1 = 3+1+1+1+1-1 = 3사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.제한사항주어지는 숫자의 개수는 2개 이상 20개 이하입니다.각 숫자는 1 이상 50 이하인 자연수입니다.타겟 넘버는 1 이상 1000 이하인 자연수입니..

알고리즘 2024.07.17