본문 바로가기

코딩테스트 연습/프로그래머스 알고리즘

해시 - 완주하지 못한 선수

반응형

문제

 

 


풀이 및 정답

 

 

그냥 for문 사용해 모든 값들을 비교한 코드는 정확하지만, 시간 초과가 났다. (그 와중에 효율성 하나는 통과했다.)

매번 무식하게 함수를 호출해 for문을 계속 부르기 때문에 시간 초과가 난 것이다. 

 

 

조건은 최대 참여자의 수가 100,000, 코드가 최소한의 수만 반복을 해야 시간 초과X,

완주자+1==참여자, 미완주자는 무조건 한명, 중복 이름 있음.

 

미완주자 한명 빼고 배열의 값들이 다 똑같으니,

둘다 정렬 되었을 때 미완주자가 있는 부분부터 두 배열 안의 값이 달라진다.

 

두 배열을 정렬을 하고, 최대로 배열의 길이만큼만 비교를 하게 다시 코드를 짰다.

 

코드

 

 

 

 


 

알아야할 것

 

간단하게 배열 정렬 하기

배열 정렬 함수 Arrays.sort();

오름차순 => Arrays.sort(변수명);

내림차순 => Arrays.sort(변수명, Collections.reverseOrder());

*주의) import java.util.Arrays; 잊지말자.

내림차순은 import java.util.Collections도 코드에 써야한다.

 

 

반응형