[BOJ] 1475번: 방 번호
✔️ 문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
[입력]
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.
[출력]
첫째 줄에 필요한 세트의 개수를 출력한다.
😎 소스 코드
N = list(input()) # room number
countNum = [0] * 10
for i in range(len(N)):
if N[i] == '0':
countNum[0] += 1
elif N[i] == '1':
countNum[1] += 1
elif N[i] == '2':
countNum[2] += 1
elif N[i] == '3':
countNum[3] += 1
elif N[i] == '4':
countNum[4] += 1
elif N[i] == '5':
countNum[5] += 1
elif N[i] == '6':
countNum[6] += 1
elif N[i] == '7':
countNum[7] += 1
elif N[i] == '8':
countNum[8] += 1
elif N[i] == '9':
countNum[9] += 1
# check max
sum = countNum[6] + countNum[9]
if sum % 2 == 1:
sum += 1
countNum[6], countNum[9] = sum // 2, sum // 2
print(max(countNum))
✊ 문제를 풀고 나서
N = list(input()) # room number
countNum = [0] * 10
for i in range(len(N)):
if N[i] == '0':
countNum[0] += 1
elif N[i] == '1':
countNum[1] += 1
elif N[i] == '2':
countNum[2] += 1
elif N[i] == '3':
countNum[3] += 1
elif N[i] == '4':
countNum[4] += 1
elif N[i] == '5':
countNum[5] += 1
elif N[i] == '6':
countNum[6] += 1
elif N[i] == '7':
countNum[7] += 1
elif N[i] == '8':
countNum[8] += 1
elif N[i] == '9':
countNum[9] += 1
# check max
sum = countNum[6] + countNum[9]
if sum % 2 == 1:
sum += 1
countNum[6], countNum[9] = sum // 2, sum // 2
print(max(countNum))
6, 9가 서로 호환되는 점에 주목해야 한다.
예를 들어, 방 번호가 6 9 9 9 5
일 경우 6, 9가 서로 호환되므로 개수를 더해서 2로 나눴다. 나머지가 1이면 합계에 1을 더해서 다시 2로 나눠줬다. 그 후 숫자 리스트에서 max값을 뽑아냈다.
한 가지 아쉬운 점은.. 중간에 for loop가 너무 주먹구구식이라 다른 코드로 바꾸고 싶은데 괜찮은 아이디어가 안 떠오른다ㅜ
Author And Source
이 문제에 관하여([BOJ] 1475번: 방 번호), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rany/BOJ-1475번-방-번호저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)