2024/07 59

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

1215. [S/W 문제해결 기본] 3일차 - 회문1

문제: 무단 배포 금지로 인해 사이트 주소로 남깁니다.https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14QpAaAAwCFAYi SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com   정답 코드:arr_length = 8 #배열 가로 세로 길이for test_case in range(1, 11): answer = 0 word_length = int(input()) # 단어 길이 arr = [list(input()) for i in range(arr_length)] #가로 조사 for i in rang..

SWEA 2024.07.16

1210. [S/W 문제해결 기본] 2일차 - Ladder1

문제: 무단 배포 금지로 인해 사이트 주소로 남깁니다.https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 정답 코드:dx = [1,-1]for test_case in range(10): T = int(input()) arr = [list(map(int, input().split())) for _ in range(100)] dest = [] for j in range(100): if arr[99][j] == 2: ..

SWEA 2024.07.16

93. 피로도(by DFS)

문제 설명XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다.이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러개 있는데, 한 유저가 오늘 이 던전들을 ..

문제 풀이 2024.07.16