티스토리 뷰

문제. 

세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.

 

 

입출력.

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다. 첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.

 

방법.

파이썬은 변수에 여러가지 데이터형을 저장할 수 있고, 형 변환이 자유롭다. 문자열을 배열로 보며, for문을 통해 요소에 접근하기 용이하다. 이러한 성격을 이용해 문제를 풀어보자.

 

1.  10진수는 0~9를 사용하므로, check 리스트를 10개의 슬롯을 가지도록 선언, 0으로 초기화

2.  숫자가 사용되면 해당 요소를 +1 해준다 (예) 2를 사용 → check[2]+=1

3.  자연수 3개를 입력받아 곱하고 결과를 문자열로 형 변환하여 res에 저장한다.

4.  문자열로 형 변환하는 이유는 문자열이어야 for문을 사용해 한 자리씩 값을 확인하기 용이하기 때문.

5.  for문을 사용해 숫자 사용 여부를 확인하고 2번을 실행하게 한다

6.  check 리스트의 값들을 출력 ( = 숫자 사용 횟수 출력) 

 

n = []
check = [0 for i in range(10)]

#자연수 3개 입력받기
for i in range(3) :
    n.append(int(input()))

#자연수 3개의 곱을 문자열로 형변환
res = str( n[0] * n[1] * n[2] )

#string은 배열 형태이므로 for문을 사용해 요소 하나씩 확인 가능(한 자리씩 확인 가능)
for i in res :
    check[int(i)] += 1

for i in check :
    print(i)

 

Insight.

JAVA로 최근 풀었던 문제인데, 오늘 파이썬에서 리스트를 공부한 김에 리스트를 사용해서 다시 풀어보았다. 다른 프로그래밍 언어에 익숙해져 있어서 (실력과 무관하게 ㅎㅎ 손에 익어서) 자료형을 따로 선언하지 않는다는 점이 불편한데.. 어떻게 보면 자료형끼리의 호환이 좋고 데이터를 활용하는 데 있어서 편리한 것 같다.

 

 

 

 

 

2577번: 숫자의 개수

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

www.acmicpc.net

댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday