22858번. 원상 복구 (small)
문제 링크
풀이 코드
- n이 10^4, k가 10^3이라 O(NK)에도 풀리는 문제입니다.
- 밥 먹으면서 봐서 문제가 잘 안 읽히긴 그냥 k번 돌면서 복구만 시켜주면 되는 문제인 것을 깨달았습니다.
- 처음 받는 D의 정보를 가공해줘야합니다. (dList_temp -> dList)
- [D의 값, 인덱스]로 담아주고 정렬을 하면, 먼저 와야하는 S의 인덱스의 순서대로 정렬되게 됩니다. 이해를 위해 문제의 예시에 대입.
- 문제의 D를 정렬하면 ‘[[1,2],[2,3],[3,1],[4,0],[5,4]]’와 같이 정렬이 되는데,
앞에서부터 각 요소의 1번째 인덱스를 보면, S[2]->S[3]->S[1]->S[0]->S[4] 순으로 P가 만들어지게 됩니다. (예제의 그림을 참고해보세요.)
- 위와 같이 가공된 정보를 통해 ans 리스트를 계속 갱신해주면 됩니다. O(NK)로 풀리는 문제여서 계속 temp 리스트를 만들어서 ans 리스트에 담아줘도 통과합니다.
1 |
|