본문 바로가기

코딩 테스트/DFS + BFS6

[백준 2457번] 공주님의 정원 문제 풀이 (with Python) 날짜 비교를 편하게 하기 위해 날짜를 아래와 같이 정수로 나타내 주었다. calendar = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 각 달의 마지막 날짜 def calculateDate(x, y): date = 0 for i in range(x-1): date += calendar[i] date += y return date 각 꽃이 피고 지는 시기를 정수로 계산해 배열에 넣어 준후, 배열을 피는 시기로 먼저 오름차순 배열한 후, 지는 시기로 오름 차순 배열했다. blossom.sort(key=lambda x: (x[0], x[1])) TRY 1 - 이 전의 지는 시기보다 다음 꽃이 피는 시기가 작거나 같으면서, .. 2023. 11. 27.
[백준 1987번] 알파벳 문제 풀이 (with Python) - 틀렸습니다. from collections import deque R, C = map(int,input().split()) arr =[] for i in range(R): arr.append(list(input())) passed = [] # 지나간 알파벳 목록 저장 dx = [0, 0, -1, 1] dy = [1, -1, 0, 0] q = deque() def dfs(x,y, cnt): global result result = max(result, cnt) print(passed) q.append((x, y)) while(q): x, y = q.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0.. 2023. 11. 8.
[백준 2668번] 숫자 고르기 문제 풀이 (with Python) 첫번째 줄 집합과 두번째 줄 집합을 만든다. arr을 두번째 줄이라 할때, 1번부터 N번까지 순서대로 돌며, arr[num]이 첫번째 줄 집합에 있는지 확인하여 있다면, 첫번째 줄 집합과 두번째 줄의 동등비교를 한다. 만약 두 집합이 동일하면 answer을 업데이트 해준다. 하지만, 동일하지 않다면, 첫번째 집합과 두번째 집합의 개수가 달라지므로 False를 통해 탐색을 중단한다. first= {1} second= {3} dfs first= {1, 3} second= {1, 3} True first= {2} second= {1} dfs first= {1, 2} second= {1, 3} dfs first= {1, 2, 3} second= .. 2023. 11. 7.
[백준 10026번] 적록색약 문제 풀이 (with Python) 방문하지 않은 구역의 인덱스인 경우, 큐에 넣어준다. 큐의 상하좌우를 순서대로 들러, 방문 하지 않은 구역이면서, 해당 배열의 값과 같은 값인 경우, 큐에 새로운 값을 넣어주고, 해당 배열의 방문 여부를 True로 바꿔준다. N * N 배열을 순서대로 dfs를 돌려, 개수를 세어 출력한다. from collections import deque def dfs(x, y): q.append((x, y)) checked[x][y] = True while q: x, y = q.popleft() checked[x][y] = True for i in range(4): new_x = x + dx[i] new_y = y + dy[i] if 0 2023. 11. 6.