백준 2577번 파이썬

Myeongsu·2021년 9월 15일
0

백준

목록 보기
1/15

문제링크: 백준 2577번(숫자의 개수)
백준 2577번

처음 코드

import sys

l = []
for _ in range(3):
    l.append(int(sys.stdin.readline()))

num = list(str(l[0]*l[1]*l[2]))

for i in range(10):
    cnt = 0
    for j in num:
        if i == int(j):
            cnt += 1
    print(cnt)

먼저 3개의 값을 입력받아 리스트에 넣어주었고,
str과 list를 이용해 곱한 값을 각각의 문자를 요소로 가지는 리스트로 변환했다.
이후 for문을 0~9까지 돌려 이 값과 num 리스트에 있는 요소들의 값이 일치하면 cnt를 1 증가시켜 각각의 개수를 출력했다.


문제점

입력받은 수가 3개라서 시간이 얼마 안걸리지만 시간복잡도가 이차시간이므로 이를 좀 줄일 필요를 느낌


수정 코드

import sys

a, b, c = list(int(sys.stdin.readline()) for _ in range(3))
num = a*b*c
li = [0]*10

for i in str(num):
    li[int(i)] += 1

for i in li:
    print(i)

a, b, c를 입력받고, 개수를 출력하기 위해 0을 10개 갖는 리스트 li를 생성했다.
이후 str로 num을 문자열로 변환한 뒤 for문을 돌려 num리스트에 들어있는 요소로 li의 인덱스를 증가시킨 후 출력했다.

profile
명수의 개발 공방

0개의 댓글