티스토리 뷰

2577

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net

 

내가 작성한 코드

A = int(input())
B = int(input())
C = int(input())

max = A * B * C
max = str(max)

count = [0,0,0,0,0,0,0,0,0,0]
for i in range(len(max)):
    if(max[i] == '0'):
        count[0] += 1
    elif(max[i] == '1'):
        count[1] += 1
    elif(max[i] == '2'):
        count[2] += 1
    elif(max[i] == '3'):
        count[3] += 1
    elif(max[i] == '4'):
        count[4] += 1
    elif(max[i] == '5'):
        count[5] += 1
    elif(max[i] == '6'):
        count[6] += 1
    elif(max[i] == '7'):
        count[7] += 1
    elif(max[i] == '8'):
        count[8] += 1
    else:
        count[9] += 1

for i in range(len(count)):
    print(count[i])

위 방법 말고 더 효율적인 코드가 있을 것 같아 찾아보니

list함수와 count함수를 사용하면 코드길이를 500B를 줄일 수 있다.

 

최종 코드

A = int(input())
B = int(input())
C = int(input())

max = A * B * C

result = list(str(max))

for i in range(10):
    print(result.count(str(i)))

 

a = ['1', '2', 1, 1, 2]

*list(리스트) : 리스트 형식 반환

  ㄴ 예) print(list(a))
            ['1', '2', 1, 1, 2] 

*count(원소) : 리스트 안에 원소 개수를 반환

  ㄴ 예) print(a.count(1)) 

            2 

 

1. max값 문자열(str)로 변환 후 list[] 로 묶어 result에 할당한다.

2. 문자열(str) 비교를 위해 str(i) 를 통해 문자열로 변경한다.

3. count() 함수를 통해 result[] 배열에 str(i)가 몇 개 있는지 카운팅한다.

 

'Code > BackJoon' 카테고리의 다른 글

백준 2920: 음계 [Python]  (0) 2022.01.26
백준 8958번: OX퀴즈 [Python]  (0) 2022.01.25
백준 11721번: 열 개씩 끊어 출력하기 [Python]  (0) 2022.01.24
백준 8393번: 합 [Python]  (0) 2022.01.24
백준 1924번: 2007년 [Python]  (0) 2022.01.24
댓글