728x90
https://www.acmicpc.net/problem/2511
2511번: 카드놀이
첫 번째 줄에는 게임이 끝난 후, A와 B가 받은 총 승점을 순서대로 빈칸을 사이에 두고 출력한다. 두 번째 줄에는 이긴 사람이 A인지 B인지 결정해서, 이긴 사람을 문자 A 또는 B로 출력한다. 만약
www.acmicpc.net
[풀이]
리스트를 활용하여 문제를 풀었다.
이 문제의 핵심은 승점 총합이 같은 경우 승자를 출력하는 것에 있다.
A와 B 점수 총합이 같은 경우 가장 최근에 이긴 사람이 승자, 만약 모든 케이스의 점수가 같으면 'D'를 출력 해야 한다.
그래서 모든 케이스 점수가 같은 상황이 가장 특수한 경우이므로 if문으로 먼저 특정 짓고 시작했다.
이후 나머지 케이스에 관해선 맨 뒤부터 비교해가며 먼저 더 큰 승점(점수)를 갖는 사람이 출력되고 반복문이 종료되도록 구성했다.
A = list(map(int, input().split()))
B = list(map(int, input().split()))
A_score = []
B_score = []
# 승점 리스트에 저장
for i in range(len(A)):
if A[i] > B[i]:
A_score.append(3)
B_score.append(0)
elif A[i] < B[i]:
A_score.append(0)
B_score.append(3)
elif A[i] == B[i]:
A_score.append(1)
B_score.append(1)
# 합 출력
A_result = sum(A_score)
B_result = sum(B_score)
print(A_result, B_result)
# 승자 출력
if A_result > B_result:
print('A')
elif A_result < B_result:
print('B')
else: # 총합이 같은 경우
if A == B: # 모든 게임 점수가 동일한 경우는 가장 특수한 경우이므로 if문으로 먼저 특정
print('D')
for i in range(len(A)): # 나머지 경우 뒤에서부터 역으로 이동하가며 비교
if A[9-i] > B[9-i]:
print('A')
break
elif A[9-i] < B[9-i]:
print('B')
break
728x90
'Programming Languages > Python' 카테고리의 다른 글
[백준/python] 14724번 관리자는 누구? (0) | 2022.09.25 |
---|---|
[백준/python] 10867번 중복 빼고 정렬하기 (1) | 2022.09.25 |
[백준/python] 1350번 진짜 공간 (0) | 2022.09.18 |
[ 백준/python] 14910번 오르막 (0) | 2022.09.18 |
[백준/python] 19698번 헛간 청약 (0) | 2022.09.17 |