관리 메뉴

솜씨좋은장씨

[BaekJoon] 1871번 : 좋은 자동차 번호판 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 1871번 : 좋은 자동차 번호판 (Python)

솜씨좋은장씨 2021. 7. 15. 03:52
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 좋은 자동차 번호판 입니다.

 

1871번: 좋은 자동차 번호판

각각의 자동차 번호판에 대해서, 좋은 번호판이면 "nice"를, 아니면 "not nice"를 출력한다.

www.acmicpc.net

Solution

def nice_car_number(car_number):
    is_nice = "not nice"
    front, end = car_number.split("-")
    
    front_num, end_num = 0, int(end)

    for i in range(3):
        front_num += (ord(front[i]) - 65) * 26**(2-i)        

    if abs(front_num - end_num) <= 100:
        is_nice = "nice"
        
    return is_nice

if __name__ == "__main__":
    for _ in range(int(input())):
        car_number = input()
        print(nice_car_number(car_number))

Solution 풀이

먼저 몇개의 자동차 번호를 입력 받을 것인지 입력받습니다.

그 수만큼 반복문을 돌면서 입력받은 수가 좋은 번호인지 아닌지 확인합니다.

자동차 번호는 - 으로 이어져 있으므로 앞부분과 뒷부분을 - 로 split하여 나누어줍니다.

앞 부분은 26진수 처럼 생각해달라고 했기에 ord를 활용하여 0~26으로 만들어주어야하는데

이때 ord('A')의 값이 65이므로 - 65 또는 - ord('A') 를 해준뒤 26의 제곱수를 곱해줍니다.

그 값과 뒷부분을 Int형으로 변환한 값의 차가 100 이하일 경우 nice를

그렇지 않을 경우엔 not nice를 출력하면 끝!

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments