Stay Hungry Stay Foolish

SWEA

[SWEA] 3975. 승률 비교하기 (Python/D3)

dev스카이 2024. 11. 15. 00:34

[문제 링크] 👇

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


풀이 방법

💡 테스트 케이스마다 출력하지 말고 결과를 모아서 한번에 출력하기 (시간 초과 문제)

 

테스트 케이스 번호와 함께 리스트에 담는 방법

results.append(f"#{test_case} DRAW")

 

저장한 결과를 개행문자와 함께 출력하는 방법

print("\n".join(results))

Solution

T = int(input())  # 테스트 케이스 수
results = []  # 결과를 저장할 리스트

for test_case in range(1, T + 1):
    A, B, C, D = map(int, input().split())
    alice = A * D  # 분수 비교를 위해 곱셈
    bob = C * B

    if alice> bob:
        results.append(f"#{test_case} ALICE")
    elif alice < bob:
        results.append(f"#{test_case} BOB")
    else:
        results.append(f"#{test_case} DRAW")

# 저장한 결과를 한 번에 출력
print("\n".join(results))

👩‍💻 회고

시간 초과

T = int(input())  # 테스트 케이스 수
for test_case in range(1, T + 1):
    A, B, C, D = map(int, input().split())
    Alice = A / B
    Bob = C / D
 
    if Alice > Bob:
        result = "ALICE"
    elif Bob > Alice:
        result = "BOB"
    else:
        result = "DRAW"
    print(f"#{test_case} {result}")

 

정말 쉬운 문제인데 시간 초과 문제 때문에 정답률이 낮은 것 같다. 매번 테스트 케이스마다 결과를 출력하면 실행 시간이 길어질 수 밖에 없다. 앞으로 시간 초과가 날 경우 결과를 한번에 저장해서 마지막에 출력하는 방법도 고려해봐야겠다.