if-else-elif를 활용해 프로그램을 짜고있는데 잘 모르는부분이있습니다.

조회수 1342회

elif를 활용해 주차 계산 프로그램을 짜고있는데

주차시간 주차료 비고
15분 이내 무료 15분주차료무료
15분 초과 3,000 20분 3000원
30분 초과 15분마다 천원추가 47분 4000원

이렇게 프로그램을 짜서

몇분 주차하셨습니다 얼마 내셔야합니다

뜨게 하려면 어떻게 프로그래밍을 해야하나요??!

이미지

1 답변

  • # 만드신 소스를 대충 따라해 보았습니다.
    # int(input()) 은 생략합니다.
    # 15년이나 15분이나 같은 15라서 헷갈리신다면... 27일로 바꿔 드리겠습니다.
    # 이래도 헷갈리신다면 그건 좀 곤란하네요.
    minutes = 38880
    
    # minutes 는 30보다 (많이) 큽니다.
    # 아래 코드를 보면 왠지 "extra charge" 가 나와야 할 거 같죠.
    if minutes < 15 :
        print("FREE OF CHARGE")
    elif minutes > 15 :
        print("$20")
    elif minutes > 30 :
        print("extra charge")
    
    # 과연 그럴까요?
    # 저기 오른쪽 아래 구석 실행하기 버튼 눌러서 실행해 보세요. ↘
    

    부등식으로 구간 가르는 것까지는 성공하셨는데... 주신 코드대로라면 15분 이상 주차하기만 하면 15분을 주차하든 15년을 주차하든 요금은 항상 3천원일 겁니다.

    일반적으로, else if는, 자기 앞의 (else) if 조건들이 다 실패를 했는데 자기 조건이 성공을 하면, 자기 블록 코드를 실행한 다음, 자기가 속한 전체 조건문을 탈출하게 되어 있습니다. (자기 조건도 실패를 하면 그 다음 조건으로 넘기고요.) 그러니까 예컨대 15년(=7889238분)을 주차했다면 주차시간 < 15거짓이지만 주차시간 > 15이라서 3000원 내라는 말이 나가고 끝나 버립니다. 와! 개이득

    몇 가지 힌트만 더 드리고 제 턴을 마치겠습니다.

    • 부등호 기호는 배우셨을 겁니다. 주차시간 > 15라는 조건과 주차시간 < 15라는 조건은, 주차시간 == 15일 경우 모두 실패하는 조건입니다. 이건 이해 되시죠?
    • 반올림, 올림, 버림이 뭔지는 아실 겁니다. 자연수만 생각해 보면, 1부터 15까지는 15로 나눗셈하고 소수점을 올림했을 때 1이 나옵니다. 16부터 30까지는 15로 나누고 올림했을 때 2가 나오고요.
    • 답글 달아주셔서 감사합니다 . 지금 계속 해보고있는데 아직 정확히 어느부분이 잘못되었는지 감이 오지가 않습니다. 그 혹시 말하시는 15년과 15분은 같은 15분여서 3000원을 내셔야합니다 라고 출력이되는건가요? 그런데 막상해보니 그렇지가 않던데.. 제가 어느부분을 잘못이해하고있는지 모르겠습니다. 그리고 반올림이 정확이 무엇을 의미하는지도 잘모르겠습니다. 알 수 없는 사용자 2020.4.17 06:24
    • 같은 15 여서 알 수 없는 사용자 2020.4.17 06:26
    • 답글수정했습니다. 코드 실행하기도 한번 해보시고, 링크도 눌러보세요. 엽토군 2020.4.17 12:11

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)