알고리즘/프로그래머스 문제풀이

[프로그래머스] 성격 유형 검사하기 [Level 1] (python 파이썬)

매일_공부 2023. 1. 29. 12:32
반응형

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

 

프로그래머스

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

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

def solution(survey, choices):
	## 각각의 요소의 점수를 담을 딕셔너리 생성
    d = {
        "R" : 0,
        "T" : 0,

        "C" : 0,
        "F" : 0,

        "J" : 0,
        "M" : 0,

        "A" : 0,
        "N" : 0
    }
    
    
    ans = ''
    
    # 점수 등록 (if score <=3: score = 4-score, else: score = score-4 도 가능)
    score = {1 : 3,
             2 : 2,
             3 : 1,
             4 : 0,
             5 : 1,
             6 : 2,
             7 : 3          
            }
    
    # choice 돌면서 score 갱신하기
    for i in range(len(choices)):
        if choices[i] == 4:
            pass
        else:
            if choices[i] <= 3:
                d[survey[i][0]] = d[survey[i][0]] + score[choices[i]]
            else:
                d[survey[i][1]] = d[survey[i][1]] + score[choices[i]]
    
    n = 0
    
    
    # 정답 출력 
    
    if d["R"] > d["T"]:
        ans = ans +"R"
    elif d["R"] < d["T"]:
        ans = ans +"T"
    else:
        ans = ans + "R"
    
    
    if d["C"] > d["F"]:
        ans = ans +"C"
    elif d["C"] < d["F"]:
        ans = ans +"F"
    else:
        ans = ans + "C"
        
        
        
    if d["J"] > d["M"]:
        ans = ans +"J"
    elif d["J"] < d["M"]:
        ans = ans +"M"
    else:
        ans = ans + "J"
        
        
        
    if d["A"] > d["N"]:
        ans = ans +"A"
    elif d["A"] < d["N"]:
        ans = ans +"N"
    else:
        ans = ans + "A"
    
    
    return ans

 

 

1. 각각의 요소의 점수를 담을 딕셔너리 생성

 

2. 각각의 점수에 맞게 점수 갱신

 

3. choice 돌면서

3-1. choice가 4면 무시 (0점이기에 영향이 없다.)

3-2 choice가 3보다 작으면 앞에 요소를 갱신

3-3 choice가 3보다 크면 뒤의 요소를 갱신

 

4. 정답 출력

 

 

정답 출력하는 과정을 더 깔끔하게 할 수 있지만, 카카오 인턴쉽을 시간을 정해 놓고 풀다 보니 최대한 빨리 풀어야 했었다.

따라서 가장 간단한 방법으로 하드 코딩을 했다.

 

 

 

 

 

간단한 방법으로 하드 코딩하면서 코딩테스트와 같이 시간이 부족한 경우 깔끔한 코딩보다 빠르고 정확한 코드가 더 좋을 수도 있다는 생각이 들었다. 

 

반응형