반응형
https://school.programmers.co.kr/learn/courses/30/lessons/181916
hash map과 분기문을 작성해본 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 주사위 dices를 선언 후 a,b,c,d 값을 담아 오름차순으로 정렬해줍니다.
2. key에는 주사위 값, value에는 빈도 수를 저장할 frequency_dict을 선언해 dices의 원소를 순회하며 값을 넣어줍니다.
3. 숫자의 종류 category_size 변수를 선언 해 frequency_dict의 길이를 저장합니다.
📔 풀이과정
category_size에 따라 점수를 계산합니다.
1. category_size 가 1일 때
모든 숫자가 같기 때문에 1111*dices[0]이 점수입니다.
2. category_size 가 2일 때
같은 숫자가 3개 다른 숫자가 1개인 경우와
같은 숫자가 2개씩 쌍으로 나오는 경우에 따라 점수를 p, q에 저장해 계산해줍니다.
3. category_size 3일 때
2개가 같고 나머지는 다르므로 빈도수가 1또는 3인 값을 찾아 q, r에 저장한 뒤 점수를 계산합니다.
4. category_size 4일 때
모든 숫자가 다르므로 최솟값인 dices[0]이 점수입니다.
📔 정답 출력 | 반환
각 분기별 점수를 반환합니다.
📕 Code
📔 Python3
def solution(a, b, c, d):
dices = [a,b,c,d]
dices.sort()
frequency_dict = {}
for number in dices:
frequency_dict[number] = frequency_dict.get(number, 0) + 1
category_size = len(frequency_dict)
if category_size == 1:
return 1111*dices[0]
if category_size == 2:
p, q = 0,0
for key, value in frequency_dict.items():
if value == 3:
p = key
elif value == 1:
q = key
else:
p = dices[0]
q = dices[2]
return (p+q) * abs(p-q)
return (10*p+q)**2
if category_size == 3:
keys = [key for key, value in frequency_dict.items() if value != 2]
q, r = keys[0], keys[1]
return q * r
return dices[0]
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Implementation' 카테고리의 다른 글
(Python3) - 프로그래머스(코딩 기초 트레이닝) : 9로 나눈 나머지 (1) | 2024.10.14 |
---|---|
(Python3) - 프로그래머스(PCCE 기출문제) : 7번 버스 (0) | 2024.10.14 |
(Python3) - 프로그래머스(코딩 기초 트레이닝) : 간단한 논리 연산 (0) | 2024.10.13 |
(Python3) - 프로그래머스(코딩 기초 트레이닝) : 콜라츠 수열 만들기 (0) | 2024.10.12 |
(Python3) - 프로그래머스(코딩 기초 트레이닝) : 배열 만들기 2 (0) | 2024.10.12 |