코딩딩/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))