코딩테스트 연습/프로그래머스 알고리즘
해시 - 완주하지 못한 선수
༚
2020. 4. 5. 20:47
반응형
문제
풀이 및 정답
그냥 for문 사용해 모든 값들을 비교한 코드는 정확하지만, 시간 초과가 났다. (그 와중에 효율성 하나는 통과했다.)
매번 무식하게 함수를 호출해 for문을 계속 부르기 때문에 시간 초과가 난 것이다.
조건은 최대 참여자의 수가 100,000, 코드가 최소한의 수만 반복을 해야 시간 초과X,
완주자+1==참여자, 미완주자는 무조건 한명, 중복 이름 있음.
미완주자 한명 빼고 배열의 값들이 다 똑같으니,
둘다 정렬 되었을 때 미완주자가 있는 부분부터 두 배열 안의 값이 달라진다.
두 배열을 정렬을 하고, 최대로 배열의 길이만큼만 비교를 하게 다시 코드를 짰다.
코드
알아야할 것
간단하게 배열 정렬 하기
배열 정렬 함수 Arrays.sort();
오름차순 => Arrays.sort(변수명);
내림차순 => Arrays.sort(변수명, Collections.reverseOrder());
*주의) import java.util.Arrays; 잊지말자.
내림차순은 import java.util.Collections도 코드에 써야한다.
반응형