본문 바로가기
프로그램/Python 1000제

Python 336제] 세종대 프로그래밍 언어 과제3 3번 주사위 게임

by 건티 2025. 3. 18.
728x90

출처 : 반크_설과 대보름

 

문제]

A B 주사위 게임을 합니다. 주머니 속에는 빨간색, 노란색, 파란색 주사위가 있습니다.

주사위는 A B 번갈아 뽑습니다.

뽑은 주사위를 A B 번갈아 던집니다.

이때, 빨간색 주사위가 나오면 게임을 멈춥니다.

노란색 주사위가 나오면 주사위 숫자만큼 값을 누적합니다.

만약 주사위의 값이 1~6 사이가 아니라면 주사위를 다시 던집니다.

파란색 주사위가 나오면 주사위 숫자만큼 값을 뺍니다.

만약 주사위의 값이 1~6 사이가 아니라면 주사위를 다시 던집니다.

A B 누적값이 30 넘으면 게임을 중지합니다.

A B 누적값을 출력하고 어느 학생이 승리했는지 알려줍니다.

(누적값이 작은 학생이 승리합니다.)

 

[입력 예시 1]

yellow

1

2

yellow

6

5

yellow

3

4

blue

1

2

Red

 

[출력 예시 1]

totalA = 9

totalB = 9

A and B are winners!

 

[입력 예시 2]

yellow

4

7

5

1

blue

1

3

red

 

[출력 예시 2]

totalA = 4

totalB = -2

B is a winner!

 

[입력 예시 3]

yellow

1

6

yellow

3

6

yellow

5

6

yellow

1

6

yellow

4

5

yellow

6

6

 

[출력 예시 3]

totalA = 20

totalB = 35

A is a winner!

 

 

참고풀이]

totalA=0
totalB=0
while True:
    #A,B가 주사위 색을 선택한다.
    ybr=input()
    if ybr=="yellow":
        while True:
            A=int(input())
            if A<1 or A>6: continue
            B=int(input())
            if B<1 or B>6: continue
            if (1<=A<=6) and (1<=B<=6):
                break
        totalA+=A
        totalB+=B
    elif ybr=="blue":
        while True:
            A=int(input())
            if A<1 or A>6: continue
            B=int(input())
            if B<1 or B>6: continue
            if (1<=A<=6) and (1<=B<=6):
                break
        totalA-=A
        totalB-=B
    elif ybr=="Red" or ybr=="red":
        break

    if totalA>30 or totalB>30: break

print("totalA =",totalA)
print("totalB =",totalB)
if totalA<totalB:
    print("A is a winner!")
elif totalA>totalB:
    print("B is a winner!")
else:
    print("A and B are winners!")
            

 

참고풀이 결과]

 

 

 

 

 

대한민국의 아름다운 영토, 독도의 겨울

 

반응형

댓글