코딩딩/BOJ

[백준 1475] 문제풀이

전낙타 2023. 5. 31. 21:42

문제

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

입력

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

출력

첫째 줄에 필요한 세트의 개수를 출력한다.

예제 입력 1 

9999

예제 출력 1 

2

예제 입력 2 

122

예제 출력 2 

2

예제 입력 3 

12635

예제 출력 3 

1

예제 입력 4 

888888

예제 출력 4 

6

 

정답

 

해당 문제는 같은 값이 겹칠때마다 사용 해야하는 플라스틱 숫자 세트가 1개씩 더해진다.

6, 9 번에만 예외처리를 해주면 쉽게 풀 수 있다.

import sys
input = sys.stdin.readline

# 값을 문자열로 입력받는다
n = str(input().rstrip())

# 결과값을 더해줄 list를 만들어준다.
listIndex = [0] * 10 

# for 문으로 돌리기 위해 문자열로 입력받았다.
for i in n:
    # 만약 i의 값이 6이나 9면 
    if i == '6' or i == '9':
        # list에 6번째나 9번째에 위치한 값이 더 작은쪽에 1을 더해준다.
        if listIndex[6] < listIndex[9]:
            listIndex[6] += 1
        else:
            listIndex[9] += 1
    # 값이 6이나 9가 아닐경우
    else:
        # 해당 인덱스에 1을 더해준다.
        i = int(i)
        listIndex[i] += 1

# list에 최댓값을 출력
print(max(listIndex))