본문 바로가기

분류 전체보기121

[백준 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.
[백준 19237번] 어른 상어 문제 풀이 (1) 배열에 상어 번호와 냄새가 남은 시간을 저장 - arr 배열 다음과 같이 초기 배열이 정해지면 아래처럼 배열에 [상어 번호, 냄새가 남은 시간] 으로 저장한다. [ [[0, 0], [0, 0], [0, 0], [0, 0], [3, 4]], [[0, 0], [2, 4], [0, 0], [0, 0], [0, 0]], [[1, 4], [0, 0], [0, 0], [0, 0], [4, 4]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]] ] (2) 각 상어의 현재 위치 저장 - location 배열 [[], [2, 0], [1, 1], [0, 4], [2, 4]].. 2023. 11. 6.
[백준 1027번] 고층 건물 문제 풀이 이 문제를 풀기 위해서는 i 번째 건물에서 (N-1)개의 건물들과 기울기를 구해서 비교해야 한다. 이때, i 번째 빌딩을 기준으로 왼쪽에 있는 경우, 가까운 건물들의 기울기 보다 작으면 보이고, i 번째 빌딩을 기준으로 오른쪽에 있는 경우, 가까운 건물들보다 기울키가 크면 보인다. 따라서, 가까운 빌딩들부터 순서대로 기울기를 구하고, 왼쪽의 경우 더 작은 기울기가 있으면 +1, 오른쪽의 경우 더 큰 기울기가 있으면 +1 해준다. N = int(input()) building = list(map(int, input().split())) INF = int(1e10) def angle(i, h1, j, h2): return (h2-h1)/(j-i) count.. 2023. 11. 5.