티스토리 뷰
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181916
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
주사위 4개를 굴렸을 때 나온 숫자에 따라 점수 계산하기
1. 주사위 4개가 모두 같은 숫자일때 -> 1111 * q
2. 3개의 주사위에서 같은 숫자, 1개 주사위에서 다른 숫자일때 -> (10 * p + q)^2
3. 주사위 2개씩 같은 숫자 -> (p+q) * |p-q|
4. 주사위 2개가 같은숫자(p), 나머지 두 주사위에서 각각 다른 숫자일때 -> q * r(q, r은 각각 다른 숫자)
5. 주사위 4개가 모두 다른 숫자일때 가장 작은수
Q. LEVEL 0의 난이도이지만, 2023년 09월 기준 정답률이 45% 정도이다.
접근했던 방법
1. python3 dic 자료형을 이용한다.
Key : 주사위를 굴려 나온 숫자 / Value : 나온 횟수
Ex) 주사위 값이 6일때 -> keyValue={6:1}
2. keyValue Dic형의 길이값을 통해 경우의 수 추론
- 길이가 4일때 : 4개다 다른 숫자
- 길이가 1일때 : 4개다 같은 숫자
- 길이가 3일때 : 2개가 같고, 각각 다른 숫자 (1개 , 1개)
- 길이가 2일때
- 1) 2개씩 각각 같은 숫자 ex) 6, 6, 3, 3
- 2) 3개가 같고, 1개가 다른 숫자 ex) 4, 4, 4, 1
3. Value값을 순회하며 확인하긴 시간이 오래 소요되므로 ValueKey 형태로 Dic 생성.
--> Dic의 경우 Key값이 중복될때 마지막 값으로 덮어쓰므로, key 값은 list 형태로 사용.
ex) 주사위를 굴려 나온 숫자가 2, 2, 4, 4 일때 ValueKey = :{2:[2, 4]}
따라서 최종 소스코드
최종 소스코드
# 주사위 게임3
def solution(a, b, c, d):
answer = 0
keyValue = {}
valKeyDic = {}
for i in (a, b, c, d):
if keyValue.get(i) == None:
keyValue[i] = 1
else:
keyValue[i] = keyValue[i] + 1
for key, value in keyValue.items():
if valKeyDic.get(value) != None:
valKeyDic.get(value).append(key)
else:
valKeyDic[value] = [key]
print('valKeyDic : ', valKeyDic)
if len(keyValue) == 1: # 4개 다 같은 숫자
answer = 1111 * a
elif len(keyValue) == 2:
if valKeyDic.get(3) != None: # 3개 같은숫자
p = valKeyDic[3][0]
q = valKeyDic[1][0]
answer = (10 * p + q) * (10 * p + q)
elif valKeyDic.get(2) != None: # 2개, 2개 같은 숫자
p = valKeyDic[2][0]
q = valKeyDic[2][1]
answer = (p + q) * abs(p - q)
elif len(keyValue) == 3:
q = valKeyDic[1][0]
r = valKeyDic[1][1]
answer = q * r
elif len(keyValue) == 4: # 4개 다 다른경우
answer = min(a, b, c, d)
return answer
'CS > 코딩테스트' 카테고리의 다른 글
프로그래머스 - 다음 큰 숫자 - python3 (0) | 2023.11.06 |
---|---|
프로그래머스 - LEVEL2 - JadenCase 문자열 만들기 (0) | 2023.11.03 |
프로그래머스 - LEVEL1 - 바탕화면 정리 - python3 (2) | 2023.11.01 |
[1차] 다트 게임 - 프로그래머스 - LEVEL1 (2) | 2023.10.30 |
프로그래머스 - LVEL1 - [공원 산책] (0) | 2023.09.21 |
- Total
- Today
- Yesterday
- python3
- vue정의
- vue3
- LELVE1
- Mac
- Level2
- 주사위게임3
- 인스턴스초기화블럭
- spring
- python2.7
- collections
- composition api
- JadenCase
- 클래스초기화블럭
- 괄호 회전하기
- optionsAPI
- Java
- vue3란?
- 숫자의표현
- 다음 큰 숫자
- 프로그래머스
- 문제 리포트
- defaultdict
- JAVA 변수 초기화
- builder
- 명시적 초기화
- level1
- 초기화블럭
- Leve2
- 문자열만들기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |