jyamethyst21 님의 블로그
백준 1475번- '방 번호' (PYTHON 풀이) 본문
문제:

0~9까지의 플라스틱 숫자가 있을 때, 이를 조합해서 다솜이의 방번호를 만들어주면 되는데 플라스틱 숫자는 각각 1개씩 들어있으므로 중복된 숫자가 있을 경우 세트수를 늘려서 총 사용 세트수를 출력하면 된다. 이때 주의할 점은 6은 9로, 9는 6으로 서로 대체가 가능하다는 점이다.
풀이:
N = list(map(int,input()))
count = [0] * 10
for i in N:
count[i] += 1
six_nine = count[6] + count[9]
count[6] = (six_nine+1) // 2
count[9] = 0
print(max(count))
값을 입력받고, 0으로 초기화한 10개의 배열을 만든다.
입력값에서 사용해야 하는 숫자들을 0으로 초기화한 count의 각 자리의 값에 1씩 더해줘서 각 숫자가 총 몇개 필요한지 구한다. count 배열의 인덱스도 0부터 시작, 플라스틱 숫자도 0부터 시작함으로 인덱스를 활용하여 쉽게 값을 추가할 수 있다.
그 다음 앞서서 말한 것처럼 6과 9의 대체 가능한 부분을 코드에 반영해주기 위하여 six_nine 변수를 선언하였다. 두 값이 사용된 횟수를 더해서 2로 나눈 몫이 6, 9 관련 필요한 총 플라스틱 숫자 세트 개수이기 때문에 이를 6번 인덱스(6이 해당하는 자리)에 넣어주고 숫자 9가 사용된 건 6자리에 이미 계산해서 추가했으므로 9는 0으로 초기화해준다.
count[6] 자리에서 6, 9 사용횟수를 더하고 1을 추가해주는 이유는 자릿수 반올림 때문이다. 만약 6이 3번 9가 2번 사용되었다면 (3+2) // 2 = 2가 될 것이다. 하지만 실제로 사용해야 하는 세트수는 3세트여야 하기 때문에 반올림을 위해서 1씩 더해준다. '//' 연산은 소수점을 버리기 때문에 불가피하다.
여기까지 실행하면, 특수 상황이었던 6과 9에 대한 계산은 끝났고 나머지는 각각 1번씩만 사용할 수 있으므로 이에 대한 숫자 계산도 for문을 통해서 계산이 됐을 것이다. 그래서 count 배열에서 가장 큰 값을 출력하면 그것이 필요한 세트수이므로 max 함수를 활용해서 출력해주면 된다.
'CODING 💻' 카테고리의 다른 글
| 백준 2576번- '홀수' (PYTHON 풀이) (0) | 2026.01.10 |
|---|---|
| 백준 2530번- '인공지능 시계' (PYTHON 풀이) (0) | 2026.01.09 |
| 백준 1076번- '저항' (PYTHON 풀이) (0) | 2026.01.07 |
| 백준 9093번- '단어 뒤집기' (PYTHON 풀이) (0) | 2026.01.06 |
| 백준 10162번- '전자레인지' (PYTHON 풀이) (0) | 2026.01.05 |
