728x90
문제 설명
1. N x N행렬이 주어진다.
2. 숫자들이 주어진다.
3. N번째에 해당하는 숫자를 구하면 된다.
풀이 과정
1. 이거 우선순위 큐를 이용해서 풀었는데, 내가 볼 때에는 문제의 조건 중 하나인 '아래 줄이 윗 줄의 숫자보다 크다'를 이용하려면 우선순위 큐를 두 번 사용하는게 좋을 것 같기는 하다.
2. 그런데 왜인지는 모르겠지만 그걸 쓰지 않고도 해결이 되었다(시간복잡도에서 손해를 많이 보는데도 통과된게 이상한 느낌)
3. 먼저 우선순위 큐를 사용하면 오름차순으로 정리되는데, 우선순위 큐에 큰 순서대로 N개를 저장해서 갱신해주면 맨 위가 해당 답이 될 것이다.
4. 그렇다면 총 N개가 N번 들어오기 때문에 처음에 N번 받을 때는 우선순위 큐에 모든 숫자를 받아준다.
5. 다음부터는 숫자를 받을 때 마다 우선순위 큐의 peek값과 비교하여, 더 큰 숫자면 현재 peek를 poll시키고 새로운 숫자를 받아준다.
6. 이걸 반복하면 값이 들어올 때 마다 pq가 새로운 peek값을 바꾸어 주고, 마지막까지 모든 값을 받으면 그 때에 peek에 있는 숫자가 답이 된다.
7. 이렇게 하면 굉장히 쉽게 풀리긴 한다...
코드
'알고리즘 공부' 카테고리의 다른 글
[백준 1495번] 기타리스트 - java (0) | 2021.12.19 |
---|---|
[백준 14226번] 이모티콘 - java (0) | 2021.12.16 |
[프로그래머스] 행렬 테두리 회전하기 - java (0) | 2021.12.11 |
[백준 2668번] 숫자고르기 - java (0) | 2021.12.02 |
[백준 1629번] 곱셈- java (0) | 2021.11.28 |