문제

 

내가 작성한 코드
# 방 번호 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)를 해주면 우리가 원하는 필요한 세트의 개수를 구할 수 있습니다

+ Recent posts