Jinny Kong’s blog
19th KOALA 2주차 본문
2주차 시작~ヾ(•̀ ヮ <)و
으어ㅓㅓ 2주차는 급하게 하느라 피가 말렸다... 앞으로 미리미리 해야지 ( ᯣ - ᯣ )
다 풀어봤던 문제지만 파이썬으로는 처음 풀어보는데 확실히 풀고나서 이전 코드와 비교해보면 파이썬 코드가 훨씬 간결하고 생각의 흐름대로 코드를 짤 수 있는 것 같아서 좋은 것 같다!! (●ˇ∀ˇ●)
이번에 풀이할 문제는 바로...!! ( ・o˙ )(두구두구)
백준 1475번 : 방 번호
방 번호를 꾸미기 위해 숫자 세트를 사용하는데, 숫자 세트는 0부터 9까지 한 개씩 들어있고, 6과 9는 서로 뒤집어 쓸 수 있다. 주어진 방 번호를 만들기 위해 필요한 세트의 최소 개수를 구하는 문제이다!!
이 문제를 읽고 가장 먼저 든 생각은... 입력받은 숫자 하나하나(0부터 9까지)의 개수를 전부 세고 6과 9는 특수 처리를 한 후에, 가장 많은 숫자의 개수를 세트의 최소개수로서 출력하면 되겠다고 생각했다..! 그런데 6과 9를 어떻게 처리할지가 가장 고민이 되는 부분이었던 것 같다.
room = input()
cnt = [0] * 10
먼저 방 번호 room을 입력받고 0부터 9까지의 숫자에 해당하는 개수를 저장할 리스트를 선언한 후 0으로 초기화해 주었다. 입력받은 숫자의 자릿수 하나하나를 뜯어봐야 하기때문에 정수로 입력받지 않고, 문자열로 입력받는게 포인트다!
for digit in room:
num = int(digit)
if num == 6 or num == 9:
cnt[6] += 1 # 6과 9를 모두 6번 인덱스에 모아 계산
else:
cnt[num] += 1
그리고 문자열 room의 자릿수 하나하나를 for문을 돌려가며 해당 숫자를 num에 정수로 저장한다. 이후 리스트 cnt의 num 인덱스에 해당하는 요소에 개수를 하나씩 더해주는 방식이다. 이때 6과 9는 서로 뒤집어서 쓸 수 있기 때문에, 두 숫자는 따로 세지 않고 cnt[6]에 몰아서 한 번에 처리하도록 했다. ʕ•̀⤙•́ ʔ
# 이제 6과 9의 총합을 반올림해서 세트 수 계산
if cnt[6] % 2 == 0:
cnt[6] = cnt[6] // 2
else:
cnt[6] = cnt[6] // 2 + 1
print(max(cnt))
이 부분이 코드를 짤 때 좀 어려웠는데, 6과 9는 뒤집어서 쓸 수 있기 때문에 다른 숫자들처럼 각각 따로 세트를 세는 게 아니라, 두 숫자를 하나로 묶어서 세트 수를 계산해야 한다. 그래서 6과 9의 등장 횟수를 합쳐서 2로 나눠준 값이 실제 필요한 세트 개수가 되는데, 이때 개수가 홀수일 경우에는 세트가 하나 더 필요하니까 1을 더해주는 방식으로 코드를 작성했다. 즉, 짝수일 땐 그대로 2로 나누고, 홀수일 땐 2로 나눈 뒤 1을 더해주는 방식이다 ◟(๑•͈ᴗ•͈)◞
마지막으로 cnt 리스트에서 가장 큰 값을 출력하면, 우리가 원하는 최소 세트 개수를 구할 수 있다!
이번 문제 자체는 어렵지 않았는데, 6과 9를 묶어서 처리하는 로직을 고민하는 게 살짝 까다로웠다. 그래도 내가 생각한 방식대로 풀 수 있어서 괜히 뿌듯했고, 생각보다 재미있게 풀었던 것 같다 :) 이런 문제 하나씩 해결할 때마다 확실히 감이 조금씩 잡히는 것 같다. 2주차도 끗!! 다음 주도 화이팅~ง🍙ว ٩🍙۶ง🍙ว
'KOALA' 카테고리의 다른 글
| 19th KOALA 4주차 (5) | 2025.07.27 |
|---|---|
| 19th KOALA 3주차 (4) | 2025.07.20 |
| 19th KOALA 1주차 (0) | 2025.07.06 |
| 18th Koala 8주차 (0) | 2025.05.25 |
| 18th Koala 7주차 (1) | 2025.05.18 |