공부하기/백준

[Python] 백준 풀기 1475 - 방 번호

XEV 2022. 12. 26. 20:54

파이썬 백준 1475번

실버 5

https://www.acmicpc.net/problem/1475

 

1475번: 방 번호

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현

 

 

 

 

 

문제 풀기

6 과 9 는 같은 번호로 생각하여 한가지로 통일 시킨다.

입력된 방 번호를 리스트에 저장하고 하나씩 순차적으로 빼내어 리스트 sign_ls 의 index 에 맞춰 카운트 한다.

세트 하나 당 6 이 두 개 들어 있기에 sign_ls[6] = (sign_ls[6] + 1) // 2 로 세트의 개수를 맞추고, 최종 저장된 sign_ls 의 value 중 최대값을 출력한다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline


def fnNumberOfSets():
    sign_ls = [0] * 9
    for i in range(len(n_ls)):
        if n_ls[i] == 9:
            n_ls[i] = 6
        sign_ls[n_ls[i]] += 1
    
    sign_ls[6] = (sign_ls[6] + 1) // 2
    
    print(max(sign_ls))


if __name__ == "__main__":
    n_ls = list(map(int, inputdata().strip()))
    
    fnNumberOfSets()

 

 

 

 

 

추가 하기

리스트 변경 내용 확인

import sys
inputdata = sys.stdin.readline


def fnNumberOfSets():
    sign_ls = [0] * 9
    for i in range(len(n_ls)):
        if n_ls[i] == 9:            ## 9 를 6 으로 변경.
            n_ls[i] = 6
        sign_ls[n_ls[i]] += 1       ## 필요 숫자를 index 번호에 맞춰 개수 저장.
    print(f'n_ls: {n_ls}')          # test print
    print(f'sign_ls: {sign_ls}')            # test print
    
    sign_ls[6] = (sign_ls[6] + 1) // 2          ## 6 또는 9 는 두 개당 한 세트.
    print(f'sign_ls: {sign_ls}')            # test print
    
    print(max(sign_ls))         ## 필요한 숫자중 가장 많은것 출력.



if __name__ == "__main__":
    n_ls = list(map(int, inputdata().strip()))
    print(f'n_ls: {n_ls}')          # test print
    
    fnNumberOfSets()



# 001122345667899

# n_ls: [0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 6, 7, 8, 9, 9]
# n_ls: [0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 6, 7, 8, 6, 6]
# sign_ls: [2, 2, 2, 1, 1, 1, 4, 1, 1]
# sign_ls: [2, 2, 2, 1, 1, 1, 2, 1, 1]

# 2