본문 바로가기

알고리즘

[자료구조:스택] 백준 20001번 고무오리 디버깅 Python 풀이

728x90
반응형

문제 요약

문제 풀기 힘들어하는 수진이를 위해 민우가 문제를 해결해주는 신비한 능력을 가진 고무오리를 준비했다.

고무오리의 사용법은 아래와 같다.

- "고무오리 디버깅 시작"을 외침

- 문제를 풀다가 고무오리를 받으면 최근 풀던 문제 해결

- "고무오리 디버깅 끝"을 외치면 풀이 종료

풀 문제가 없는데 고무오리를 사용하면 체벌로 두 문제 추가

 

👉 백준 20001번 문제 바로가기

입력

첫 번째 줄은 "고무오리 디버깅 시작"

두 번째 줄부터 "고무오리" 또는 "문제" 주어짐

"고무오리 디버깅 끝"이 주어지면 프로그램 종료

최대 102줄까지 입력

출력

고무오리 디버깅이 끝날 때, 주어진 문제가 모두 해결되었으면 "고무오리야 사랑해"를 출력. 하나라도 문제가 남으면 "힝구" 출력

입출력 예시

입력 출력
고무오리 디버깅 시작
문제
고무오리
문제
문제
고무오리
고무오리
고무오리 디버깅 끝
고무오리야 사랑해
고무오리 디버깅 시작
고무오리
고무오리
고무오리
고무오리 디버깅 끝
고무오리야 사랑해
고무오리 디버깅 시작
문제
문제
고무오리
고무오리
고무오리
문제
고무오리
문제
고무오리
고무오리
고무오리
고무오리 디버깅 끝
고무오리야 사랑해
고무오리 디버깅 시작
고무오리
고무오리 디버깅 끝
힝구

정답 코드

inputVal = input()
values = []
question = "문제"

while (inputVal != "고무오리 디버깅 끝"):
  # 데이터 입력
  inputVal = input()
  
  # 풀이
  if inputVal == "문제":
    values.append(question)
  if inputVal == "고무오리":
    if len(values) == 0:
      values.append(question)
      values.append(question)
    else:
      values.pop()

# 출력
print("고무오리야 사랑해") if len(values) == 0 else print("힝구")

 

question을 따로 뒀지만 풀이에서 inputVal == "문제" << 이렇게 사용한 이유는, 코드를 바로 알아보기 쉽도록 하기 위해서. "고무오리"와 "문제"로 눈에 더 잘 들어와서.

그리고 출력에서는 코드 길이를 줄이기 위해 삼항연산자를 사용

 

깨달은 것

  • 파이썬에서 삼항연산자는 "조건 ? 참일 때 값 : 거짓일 때 값" 대신 "참일 때 값 if 조건 else 거짓일 때 값"으로 사용해야 한다.
728x90
반응형