문제

https://school.programmers.co.kr/learn/courses/30/lessons/118666?language=javascript

 

 

푸는 데 걸린 시간

5시간

 

 

코드

function solution(survey, choices) {
    var answer = '';
    var arr = { R : 0, T : 0, C : 0, F : 0, J : 0, M : 0, A : 0, N : 0 };
    
    for (let i=0; i < survey.length; i++) {
        if(choices[i] < 4) { 
            arr[survey[i].slice(0,1)] += 4 - choices[i];
        } else if(choices[i] > 4) {
            arr[survey[i].slice(1,2)] += choices[i] - 4;
        }
    }
    
    for(let j = 1; j <= Object.keys(arr).length; j+=2) {
        if (Object.values(arr)[j-1] > arr[Object.values(arr)[j]]) {
            answer += Object.keys(arr)[j-1];
        } else if (Object.values(arr)[j-1] < Object.values(arr)[j]){
            answer += Object.keys(arr)[j];
        } else { // 동점. 알파벳 순
            if(Object.keys(arr)[j-1] < Object.keys(arr)[j]) {
                answer += Object.keys(arr)[j-1];
            } else {
                answer += Object.keys(arr)[j];
            }
        }
    } 
    return answer;
}

 

 

후기

일단 문제 읽는데 1시간 걸렸다.

문제가 이해가 잘 안돼서 엄청 애 먹었다.

그리고 3시간은 코드 작성하는 데 걸렸는데 나와의 싸움이었다.

코드를 작성하면서도 '이렇게 하면 될 거 같긴한데 너무 어렵게 짜는 거 같은데?' 라는 생각이 들어서 썼다 지웠다하면서 좀 더 단순하게 짤 수 있을 거 같은데...를 반복해서 코드가 길진 않은 데 오래 걸렸다.

코딩테스트는 어쨌든 간결하고 단순하게 짤 수록 좋으니까 길고 복잡하게 짜고 싶지 않았는 데 해결하고 나서 구글링해보니 내 코드도 좋은 코드는 아니다.

나머지 시간은 테스트 통과가 안돼서 헤매는 시간이었는데 알고보니 내가 문제 이해를 잘못 한 거였다.

그러니까 그냥 문제 이해를 못해서 시간을 엄청 잡아먹었다....

(점수를 1,2,3/3,2,1 이렇게 부여하려면 4를 빼줘야되는 데 4를 안 빼줘서 그런 거 였음)