백준

백준 2577 숫자의 개수 파이썬

하카데미 2022. 12. 21. 10:15

1. 문제

세 개의 자연수가 주어질때 세 자연수의 곱한 결과 중 0~9까지 각각 몇번 쓰였는지 구해라

 

2. 출제의도

숫자와 문자를 자유롭게 변환 가능?

반복문 잘함?

 

3. 풀이

nums = [int(input()) for n in range(3)]
mul_nums = list(str(nums[0] * nums[1] * nums[2]))
result = [mul_nums.count(str(n)) for n in range(10)]
# 1
print("\n".join(str(n) for n in result))

# 2
for n in result:
    print(n)

nums

3번의 반복을 통해 입력 받고 입력 받은 문자를 int형으로 변환한다. 그리고 3개의 숫자를 리스트에 담는다.

 

mul_nums

3개의 숫자를 요소로 갖고 있는 리스트에서 인덱스를 활용해 곱한다. 그리고 곱의 결과를 str(문자)형으로 변환하여 리스트에 담는다. 이 과정은 문자형으로 바꾼 값들을 리스트에서 꺼내서 반복문을 통해 각 문자의 개수를 카운팅하기 위함이다. 

 

result

0부터 9까지 10번의 반복을 통해 각 숫자에 해당하는 mul_nums의 요소를 카운팅한다. 그리고 이 카운팅 결과를 리스트에 담는다.

 

# 1

print함수 안에 반복문을 사용한 경우이다. result의 요소를 한개씩 가져와 출력하고 그 출력의 형태는 줄바꿈으로 한다.

 

# 2

result에는 인덱스 순서가 0~9를 의미하고 각 인덱스에는 각 숫자가 몇번 쓰였는지 담겨있다. 반복문을 통해 요소를 꺼내 출력한다.

 

[참고] # 1과 # 2는 방법은 다르지만, 같은 결과를 보인다. 백준에서 제출했을 때 결과는 아래 그림을 통해 확인할 수 있다.

# 1 = 제출번호 37842068

# 2 = 제출번호 52889533

 

4. 남의 버전

a = int(input())
b = int(input())
c = int(input())

d = list(map(int, (str(a * b * c))))

for i in range(10):
    print(d.count(i))

a, b, c

3개의 숫자를 각 변수에 입력 받는다. 그리고 입력 받은 자료를 int형으로 변환한다.

 

d

3개의 변수는 숫자형이므로 곱셈이 가능하다. 곱한 후 문자로 바꾼다. 그럼 123의 숫자 결과라면 '123'문자열로 변한다.

map을 통해 '123' 문자열을 숫자로 1, 2, 3으로 변환하여 리스트에 담는다.

 

for문

10번의 반복을 통해 d에 각 숫자가 몇번 쓰였는지 출력한다.

'백준' 카테고리의 다른 글

백준 2562 최댓값 파이썬  (0) 2022.12.14
백준 10818 최소, 최대 파이썬  (0) 2022.12.13
백준 1110 더하기 사이클 파이썬  (0) 2022.12.07
백준 10951 A+B 파이썬  (0) 2022.12.06
백준 10952 A+B 파이썬  (0) 2022.12.05