설문조사

박진은·2023년 3월 7일
0

코테

목록 보기
8/44

카카오 설문 조사

https://school.programmers.co.kr/learn/courses/30/lessons/118666
위의 경로에서 문제를 확인 가능하다
다른 문제들은 특정 자료형을 사용해서 풀이 할 수 있는 반면 이번 문제는 특별한 자료구조를 요구하지는 않는다. 하지만 문제를 이해하기 어려웠다

def check(survey_, choices_, result_dict):
    s_list = list(survey_)
    if choices_ == 4:
        pass
    elif choices_ <= 3:
        result_dict[s_list[0]] += 4 - choices_
    else:
        result_dict[s_list[1]] += choices_ - 4

def gernerate_answer(result_dict):
    answer = []
    if result_dict["R"] >= result_dict["T"]:
        answer.append("R")
    else:
        answer.append("T")

    if result_dict["C"] >= result_dict["F"]:
        answer.append("C")
    else:
        answer.append("F")

    if result_dict["J"] >= result_dict["M"]:
        answer.append("J")
    else:
        answer.append("M")

    if result_dict["A"] >= result_dict["N"]:
        answer.append("A")
    else:
        answer.append("N")
    return answer

def solution(survey, choices):
    type = {"R", "T", "C", "F", "J", "M", "A", "N"}
    result_dict = {x: 0 for x in type}
    for i in range(len(survey)):
        check(survey[i], choices[i], result_dict)
    ans = gernerate_answer(result_dict)
    answer = ''

    for i in ans:
        answer += i

    return answer
s = ["AN", "CF", "MJ", "RT", "NA"]
c = [5, 3, 2, 7, 5]
print(solution(s,c))

문제를 푸는 방식이 여러가지 방식이 있겠지만 이번 문제를 풀면서 깨달은게 있다면 프로그래밍 문제는 항상 여러 케이스가 주어지지만 쉽게 접근하기 위해서 단일 문제만을 생각해 보는 것이 가장먼저 해야할 일 같다. 이번 문제를 풀때도 설문조사의 답변이 하나일 때의 경우의 수를 생각하니 문제가 풀렸던거 같다.
아 그리고 위의 코드에서 개선할 점이 있다면 문자열을 리스트로 바꾸는 과정을 거친 것이다 사실 파이선은 문제열을 배열로 사용할 수 없다고 생각했었다.

s = ["AN", "CF", "MJ", "RT", "NA"]
c = [5, 3, 2, 7, 5]
print(s[1][1])

F
TCMA

Process finished with exit code 0

사실 아니다 문자열로 사용이 가능하다.

profile
코딩

0개의 댓글