백준/Python

[백준] 27162 Yacht Dice (python 파이썬)

노랑꼬리 2023. 1. 15. 22:00

문제링크 :https://www.acmicpc.net/problem/27162

 

27162번: Yacht Dice

《Yacht Dice》는 여러 명이 플레이하는 주사위 게임입니다. 플레이어는 우선 주사위를 $5$개 굴립니다. 이후 원하는 주사위를 고정시킨 뒤, 남은 주사위를 다시 굴리는 일을 두 번 이하로 할 수 있

www.acmicpc.net

 

작성코드

 

해설

하나하나 조건별로 체크를 해주어 가장 스코어가 큰 값을 저장해주었다.

문제에서는 3개의 주사위가 주어지고 2개의 주사위를 임의로 결정하므로 이를 생각하여 최대치를 저장한다.

 

우선 YorN의 입력과 DICE 입력을 리스트로 받아둔다.

score는 최대 스코어를 저장할 변수이고

count는 조건에 해당하는 주사위 수를 저장할 변수이다.

 

 

 

 

1~6의 경우

for문으로 작성해 주었다.

YorN 체크를 해주어 Y라면 주사위를 확인해 조건에 맞을 경우 카운트 한 뒤

스코어 계산을 진행한다.

임의의 주사위 2개는 무조건 조건에 맞게 처리하므로 count에 +2를 해준다.

 

 

Four of a Kind 의 경우

 

같은 주사위가 4개 이상이 될 경우 해당 주사위 4개의 합이 스코어가 된다.

임의 주사위 2개는 무조건 조건에 맞게 되므로 2개 이상이 되면 된다.

 

same을 0으로 두고 두 수가 같은 경우 same을 저장해준다.

세 수가 같은 경우는 첫번째 조건인 DICE[0] ==DICE[1]에 맞기 때문에 same이 DICE[0]이 된다.

 

스코어에는 same*4의 값을 넣어주면 조건에 맞지 않으면 자연스럽게 결과가 0이 된다.

 

 

Full House 는 조건이 까다롭다.

풀하우스의 경우는 크게 두가지로 나뉘는데

고정 세 주사위가 같은 수일 때

임의 주사위 두개가 최대가 되야하는데

고정 주사위가 6이라면 임의 주사위로 5를,

고정 주사위가 1~5라면 임의 주사위로 6으로 정해주면 된다.

 

고정 주사위가 두개가 같은 경우 나머지 하나로 임의 주사위를 결정해 주어야한다.

이에 대한 조건을 설정해준다.

 

 

Straight는 Little는 6 제외 모든 수, Big은 1 제외 모든 수이다

조건에 맞기 위해서는 고정 주사위가 모두 다른 수가 나와야한다.

해당 두 조건에 부합하면 30점이 부여된다.

 

 

Yacht는 세 주사위가 같을 경우 나머지 임의의 주사위를 같게 하면 되므로

바로 조건에 부합된다. 50점이 부여된다.

Choice는 Y만 적용되어 있다면 고정 다이스와 임의 다이스 6 두개를 더하면 된다.