본문 바로가기
알고리즘/CodeUp PS

[CodeUp][Python] 1230번 : 터널 통과하기 2

by 빛밤하늘 2021. 8. 31.
반응형

밑의 링크는 CodeUp에서의 문제 링크입니다.

문제는 링크를 통해서 직접 봐주시길 바랍니다.

 

터널 통과하기 2

터널 $a,b,c$의 높이가 공백으로 분리되어 차례대로 3개 입력된다. (정수)

codeup.kr

 

 

 

주의해야 할 점

1. map, split을 사용하는 입력 방식

실수나 정수인 여러 값들이 입력값일 때,

split 메서드를 사용해 공백이나 어떤 문자를 기준으로 입력값을 여러 값들로 분리하고,

map 내장 함수로 각각의 값들을 int형이나 float형으로

정수, 실수 자료형으로 변환하는 하는 기법은 매우 많이 쓰입니다.

코드 이해부터 하고 나면 다른 문제에서도 외운 듯이 사용해봅시다.

num1, num2 = map(float, sys.stdin.readline().split())

 

예제 설명

1. 첫 번째 예제

- 입력

171 168 165

 

- 출력

CRASH 168

 

- 설명

입력한 세 터널의 높이 a, b, c는 171, 168, 165입니다.

첫 번째 터널의 높이 171은 차의 높이 170보다 크므로, 첫 번째 터널에서는 충돌하지 않습니다.

두 번째 터널의 높이 168은 차의 높이 170보다 작으므로, 두 번째 터널에서 충돌합니다.

차가 두 번째 터널에서 충돌했으므로, 문자열 'CRASH'와 두 번째 터널의 높이인 168을 공백으로 구분해 출력합니다.

 

생각한 풀이 과정

세 터널의 높이 a, b, c를 공백으로 구분해 입력합니다.

 

세 터널의 높이와 차의 높이 170을 차례로 비교해봅니다.

첫 번째 터널의 높이 a가 차의 높이 170 보다 크다면, 두 번째 터널의 높이와 비교하러 갑니다.

첫 번째 터널의 높이 a가 차의 높이 170 이하라면, 첫 번째 터널에서 충돌하므로,

문자열 'CRASH'와 첫 번째 터널의 높이 a값을 공백으로 구분해 출력합니다.

 

두 번째 터널의 높이 b가 차의 높이 170 보다 크다면, 세 번째 터널의 높이와 비교하러 갑니다.

두 번째 터널의 높이 b가 차의 높이 170 이하라면, 두 번째 터널에서 충돌하므로,

문자열 'CRASH'와 두 번째 터널의 높이 b값을 공백으로 구분해 출력합니다.

 

세 번째 터널의 높이 c가 차의 높이 170 보다 크다면, 차는 세 터널을 모두 무사히 통과하므로, 

문자열 'PASS'를 출력합니다.

세 번째 터널의 높이 c가 차의 높이 170 이하라면, 세 번째 터널에서 충돌하므로,

문자열 'CRASH'와 세 번째 터널의 높이 c값을 공백으로 구분해 출력합니다.

 

 

제출한 파이썬 코드

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 세 터널의 높이 a, b, c를 공백으로 구분해 입력합니다.
# 각각 int형으로 변환합니다.
a, b, c = map(int, stdin.readline().split())

# 세 터널의 높이 a, b, c를 차례대로 170 보다 큰 지 검사해봅니다.
# 첫 번째 터널의 높이가 170 초과라면
if a > 170:
    # 두 번째 터널의 높이가 170 초과라면
    if b > 170:
        # 세 번째 터널의 높이가 170 초과라면
        if c > 170:
            # 세 터널 모두 170 초과이므로 차가 잘 통과합니다.
            # 문자열 'PASS'를 출력합니다.
            print('PASS')
        # 첫 번째, 두 번째 터널은 통과했는데
        # 세 번째 터널의 높이가 170 이하라면
        else:
            # 세 번째 터널에서 사고가 나므로 문자열 'CRASH'와
            # 세 번째 터널의 높이 c값을 공백으로 구분해 출력합니다.
            print('CRASH', c)
    # 첫 번째 터널은 통과했는데
    # 두 번째 터널의 높이가 170 이하라면
    else:
    # 두 번째 터널에서 사고가 나므로 문자열 'CRASH'와
    # 두 번째 터널의 높이 b값을 공백으로 구분해 출력합니다.
        print('CRASH', b)
# 첫 번째 터널의 높이가 170 이하라면
else:
    # 첫 번째 터널에서 사고가 나므로 문자열 'CRASH'와
    # 첫 번째 터널의 높이 a값을 공백으로 구분해 출력합니다.
    print('CRASH', a)

 

제출 결과

CodeUp 1230번 : 터널 통과하기 2에서 코드 제출 결과
CodeUp 1230번 : 터널 통과하기 2에서 코드 제출 결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

※ 공감 버튼과 구독 버튼도 잊지 말고 꾹 눌러주시면 감사하겠습니다~👍👍

반응형

댓글