[백준 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.
[백준 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.