효율성 테스트에서 0점을 맞았다.
이번에도 정확성 테스트에서 TC 5개를 모두 통과했지만 항상 효율성이 똥인 코드를 짜는 나를 발견할 수 있다.
처음에 이 문제를 만났을 때는 정확성 테스트에서부터 갈려나갔었다...ㅠ
동명이인을 처리하는 코드에서 문제가 있었는데 completion의 길이가 participant보다 1이 작다는 힌트를 통해 정렬한 후에 for문을 돌려서 똑같지 않을 때 그 사람이 완주하지 못한 사람이다! 라는 것을 알 수 있었다.
문제는 동명이인이 아닌 경우에서 효율성 문제가 발생했다.
function solution(participant, completion) {
var answer;
participant.sort();
completion.sort();
for(let i = 0; i < completion.length; i++){
if(participant[i] !== completion[i]){
return participant[i]
}
for(let j = 0; j < participant.length; j++){
if(completion.includes(participant[j]) === false) answer = participant[j];
}
}
return answer;
}
아무래도 시간초과가 나는게 이중 for문 때문에 그런 것 같다.
효율성 테스트 결과 나오는 것도 엄청 오래걸리는 것으로 보아 잘못짜도 단단히 잘못짠 모양이다.
그리고 나는 바보였따..
function solution(participant, completion) {
var answer;
participant.sort();
completion.sort();
for(let i = 0; i < completion.length; i++){
if(participant[i] !== completion[i]){
return participant[i]
}
}
for(let j = 0; j < participant.length; j++){
if(completion.includes(participant[j]) === false) answer = participant[j];
}
return answer;
}
왜 이중 for문을 만들어서 풀었지? ㅋㅋㅋ......
그냥 for문을 밖으로 빼기만 했어도 효율성 테스트도 넘어가는 코드였다.
역시 생각없이 막 짜면 안되는구나를 잊어버릴때쯤 다시 상기시켜주는 내 모자람......
앞으로 이중 for문 코드로 작성되었을 때 다시 한번 더 확인하는 습관을 가져야겠다.......
오 테케 맞았네? 그럼 제출해도 되겠네? 하고 매번 설레발쳐서 제출하면 효율성 테스트 0점 나오거나 테케 몇개 맞고 나가리 당할 때가 많다..ㅎㅎㅎㅎ..