[Python/Javascript] 프로그래머스 2022 KAKAO TECH INTERNSHIP 성격 유형 검사하기

https://school.programmers.co.kr/learn/courses/30/lessons/118666

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

Python Answer

def solution(survey, choices):

    score = {'R':0, 'T':0, 'C':0, 'F':0, 'M':0, 'J':0, 'A':0, 'N':0}
    ans_first = {1:3, 2:2, 3:1}
    ans_second = {5:1, 6:2, 7:3}
    answer = ''

    for idx in range(len(survey)):
        if choices[idx] in ans_first: #앞선 선지 스코어 올려줄 경우
            score[survey[idx][0]] += ans_first[choices[idx]]
        elif choices[idx] in ans_second:
            score[survey[idx][1]] += ans_second[choices[idx]]

    if score['R'] < score['T']:
        answer += 'T'
    else:
        answer += 'R'
    if score['F'] > score['C']:
        answer += 'F'
    else:
        answer += 'C'
    if score['M'] > score['J']:
        answer += 'M'
    else:
        answer += 'J'
    if score['N'] > score['A']:
        answer += 'N'
    else:
        answer += 'A'

    return answer

두 개의 유형을 하나로 묶어서 생각한다. 123에 응답한 경우 앞선 선지의 점수를 올려야 하고 567에 응답한 경우 뒷 선지의 점수를 올려야 하기 때문에 나눠서 생각했다.

맨 처음에는 성격 유형을 4개의 딕셔너리로 나누고(RT / CF /  MJ / NA), max 값을 ans에 더해 주는 방식으로 답을 구하려고 했다.(ans가 3 이하인 경우 앞선 선지의 점수를 올려주고, ans가 5 이상인 경우 뒷 선지의 점수를 올려 주는 식으로 풀려고 했다.) 그러나 max값의 value를 찾아 주는 과정이 까다로울 것이라고 판단하였다. (가만히 생각해보니 같은 방식이라 별 다를게 없다.)

어쨌든 차분하게 순서대로 풀어 나갔다. 문제를 풀 때 여전히 까다롭게 푸는 경향이 있어 단순하고 로직을 차분하게 풀어 나가는 습관을 잘 들여야겠다,,,

 

240109 Javascript Answer

function solution(survey, choices) {
    var answer = '';
    var dic = {'R' : 0, 'T': 0, 'C' : 0, 'F': 0, 'J': 0, 'M' : 0, 'A' : 0, 'N' : 0}
    
    // survay 순회하며 choice에 따른 점수 올려주어야 한다.
    
    for (var idx = 0; idx < choices.length; idx++) {
        if (choices[idx] > 4) {
            dic[survey[idx][1]] += choices[idx] - 4
        } else if (choices[idx] < 4) {
            dic[survey[idx][0]] += 4 - choices[idx]
        }
    }
    if (dic['R'] < dic['T']) {
        answer += 'T'
    } else {
        answer += 'R'
    }
    if (dic['C'] < dic['F']) {
        answer += 'F'
    } else {
        answer += 'C'
    }
    if (dic['J'] < dic['M']) {
        answer += 'M'
    } else {
        answer += 'J'
    }
    if (dic['A'] < dic['N']) {
        answer += 'N'
    } else {
        answer += 'A'
    }
    return answer;
}

 

짱 깔끔하다

TAGS.

Comments