파이썬 코드 질문 (파일 입출력 문제, count = [0] * 10이 어떤의미인지 모르겠습니다.)

조회수 384회

문제는 1에서 10사이의 랜덤한 30개 가진 count.in 파일을 random모듈을 사용하여 생성하시오. 그리고 이 파일을 읽어서 1에서 10까지 정수의 출현 횟수를 같이 count.out 파일에 출력하시오.

//count.in

import random

fout = open('count.in', 'w')

for _ in range(30):
    num = random.randint(1, 10)
    fout.write('{:3d} '.format(num))

fout.close()

//count.out

fin = open('count.in', 'r')
fout = open('count.out', 'w')

N = fin.readline().rstrip().split()

for idx, value in enumerate(N):
    N[idx] = int(N[idx])

count = [0] * 10
for value in N:
    count[value - 1] += 1

for idx, value in enumerate(count):
    fout.write('{:3d}: {:4d}\n'.format(idx + 1, value))

fin.close()
fout.close()

제가 코드를 이렇게 구글링 하면서 만들긴했습니다.

근데 제 질문은 count.out 코드에서 count = [0] * 10이 어떤의미인지 모르겠습니다. count.out 코드가 계산되는 과정도 같이 설명해주시면 감사하겠습니다

1 답변

  • 아주 간단히 말하면, 갯수를 세기 위한 "카운터" (계수기)를 0으로 초기화 하는 겁니다.

    1~10 까지 10개 숫자 각각에 대한 "카운터"가 필요하니까, 10개의 배열로 만드는 거고요.

    보통 파이썬에서 1개짜리 배열에 *10 을 해서 10개를 만드는 건 위험한 일인데, 기본 숫자형의 배열이기 때문에, 10개의 복사본이 만들어져서 저렇게 쓸 수 있습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)