문제

내가 작성한 코드
# 방 번호 N 입력
n = input()
n_l = [int(i) for i in n]
v = [0] * 10
for n in n_l:
if (n ==9 and v[n] > v[6]):
v[6] += 1
continue
if (n ==6 and v[n] > v[9]):
v[9] += 1
continue
v[n] += 1
print(max(v))
코드 설명
n = input()
n_l = [int(i) for i in n]
v = [0] * 10
> 숫자 n을 입력받는데, input() 함수로 입력받으면 문자로 입력된다. 그리고, n_l 변수는 list compression 을 사용하여 숫자를 하나씩 분리하여 담은 리스트입니다. 이렇게 한 이유는 각 숫자의 개수를 세기 위해서입니다.
> 어쩌면 이 방식은 계수 정렬에서 아이디어를 얻었습니다.
> v는 n_l 변수에 담은 숫자 n의 각 숫자 0~9의 개수를 각각 세기 위한 변수입니다.
for n in n_l:
if (n ==9 and v[n] > v[6]):
v[6] += 1
continue
if (n ==6 and v[n] > v[9]):
v[9] += 1
continue
v[n] += 1
> for문(반복문)을 사용하여 n_l 변수에 담겨져있는 숫자를 하나씩 추출하면서 v[n] 변수에 담아줍니다.
> 이 과정에서 6과 9는 같이 사용할 수 있기 때문에, if문을 두 번사용하여 n==9 and v[n] > v[6] 과 같은 코드를 사용하여 n이 9인데 9의 개수 v[n]과 6의 개수 v[6] 을 비교할 때 v[9]가 더 크다면 v[6]의 값을 넣어주기 위해 if 문을 사용하였습니다.
> 그리고 continue 문을 사용하여 아래의 v[n] += 1을 적용하지 않고 바로 다음 for문으로 넘어가기 위해서 적용하였습니다.
> continue문을 사용하지 않으면 정답이 추출되지 않습니다.
print(max(v))
> 마지막으로 max(v)를 해주면 우리가 원하는 필요한 세트의 개수를 구할 수 있습니다
'Coding > 백준' 카테고리의 다른 글
| [15649번] 백 트래킹 - N과 M(1) with Python (★) (0) | 2022.07.26 |
|---|---|
| [10773번] 제로 with Python (0) | 2022.07.26 |
| [11866번] 구현 - 요세푸스 문제 0 with Python (★) (0) | 2022.07.25 |
| [1012번] 유기농 배추 with Python (★) (0) | 2022.07.25 |
| [1072번] 게임 (★) (0) | 2022.07.25 |