Stay Hungry Stay Foolish

SWEA

[SWEA] 20551. 증가하는 사탕 수열 (Python/D3)

dev스카이 2024. 11. 8. 22:00

[문제 링크] 👇

 

SW Expert Academy

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

swexpertacademy.com


풀이 방법

💡 B ➜  A 순으로 조건을 확인하고 처리

 

B 부터 확인

  • B 가 C 보다 크거나 같으면, B 를 1 감소시키고, 결과값을 1 누적하며 증가시킨다.
  • 감소시키다가 B 가 C 보다 작아지면 루프를 중단시킨다.
  • 추가로, B 가 1 보다 작아지면 루프를 중단한다.

A 도 마찬가지로 B 와 비교하며 루프를 돌게 한다.

 

루프가 끝나면 다음 조건을 추가한다. A 와 B 가 같거나, A 와 C 가 같으면 결과에 -1 을 저장한다.

 

Solution

T = int(input())  # 테스트 케이스 수
for test_case in range(1, T + 1):
    A, B, C = map(int, input().split())
    result = 0

    while B >= C and B > 1:
        B -= 1
        result += 1

    while A >= B and A > 1:
        A -= 1
        result += 1

    if A == B or A == C:
        result = -1

    print(f"#{test_case} {result}")

 

 

👩‍💻 회고

처음엔 -1 출력 조건을 이렇게 작성했더니 제출에 실패해서. 반례 테스트 케이스를 참고해서 수정했다.

if A == B or A == C:
    result = -1

 

반례 테스트 케이스

  1. 입력이 감소할 수 없는 구조일 때
    • 테스트 케이스: 2 2 2
    • 기대 출력: -1
    • 설명: A == B == C이므로 줄여도 조건을 만족할 수 없습니다.
  2. A가 B보다 큰 경우
    • 테스트 케이스: 3 2 1
    • 기대 출력: -1
    • 설명: 이미 A > B > C 형태로 A < B < C 조건을 만들 수 없습니다.
  3. B와 C가 같아질 수 없는 경우
    • 테스트 케이스: 1 2 2
    • 기대 출력: -1
    • 설명: B와 C가 같기 때문에 감소해도 A < B < C 조건을 만들 수 없습니다.

이 반례들로 코드를 테스트하면, 조건에 맞지 않을 때도 -1이 출력되는지 확인할 수 있다.