본문 바로가기
알고리즘 PS/문제

[백준/Python] 알고리즘 수업 - 선택 정렬 시리즈 문제 해결 팁 (23881 ~ 23900)

by veggie-garden 2022. 6. 30.

알고리즘 수업 시리즈 문제들은 의사 코드를 보고 푸는 문제다. 

 

우선 알고리즘 수업 - 선택 정렬 1 (23881), 이 문제는 계속 시간 초과가 떠서 골머리를 앓았다. 정렬 알고리즘을 함수로 구현하면 해결된다. 더 자세히 말하자면 정렬하는 코드를 함수로 만들어 함수를 실행하면 시간 초과가 나지 않는다.

 

알고리즘 수업 - 선택 정렬 3 (23883), 이 문제는 배열의 크기가 늘어 시간 초과가 난다. 이 시간 초과를 해결하기 위해서 가장 큰 수를 찾는 부분을 heap을 사용해서 해결했다. 가장 큰 수를 찾아 정렬하고 K번째에 도달했다면 바로 리턴을 해주었더니 시간초과가 나지 않았다.

 

알고리즘 수업 - 선택 정렬 4 (23884) 문제는 23883번 문제를 풀었다면 크게 어렵지 않다. 23883번 코드에서 리턴 값만 변경하면 되는 것이다. 

 

알고리즘 수업 - 선택 정렬 6 (23900) 문제는 푸는데 시간이 오래 걸렸다. 우선 시간 단축을 위해서 좌표 압축을 하는 법을 알아야 한다. 만약 모른다면 좌표 압축 이 문제를 우선 풀어보자. A, B를 좌표 압축으로 압축시킨 다음 A를 정렬을 할 때마다 B와 비교하는 것이다. 만약 동일하다면 바로 리턴, 끝까지 비교했는데 아니라면 0을 리턴하는 방식으로 풀었다. 

 

만약 계속 틀렸습니다 혹은 시간 초과가 나온다면:

더보기

정렬하기 이전의 A와 B를 비교했는지 확인해보라. 만약 이것도 아니라면 pypy3으로 문제를 풀어보라.

 

댓글