728x90
반응형
안녕하세요. 지난 포스팅의 BOJ 2562번 : 최댓값에서는 굳이 1차원 배열을 사용하지 않고 문제를 풀어보았습니다. 오늘은 1차원 배열을 적용해서 다른 문제를 풀어보도록 하겠습니다.
핵심 포인트
- 반복문
- 1차원 배열 : 리스트 자료형
제출 코드
number = int(input()) * int(input()) * int(input())
count = [0] * 10
while True :
count[number % 10] += 1
number //= 10
if number == 0 :
for i in count :
print(i)
break
해설
기본적으로 입력은 한 줄에 한 개씩 총 3개의 숫자를 입력받습니다. 하지만, 저희가 궁극적으로 필요한 것은 3개의 숫자의 곱셈이기 때문에 int(input())를 어떤 변수에 저장하지 않고 바로 number = int(input()) * int(input()) * int(input())를 통해 곱셈의 형태로 변수에 저장해줍니다. 다음으로 count = [0] * 10은 10개의 숫자(0 ~ 9)가 각각 몇 번 쓰였는지 세기 위한 변수를 선언합니다.
문제를 풀기 위한 아이디어는 간단합니다. number의 가장 오른쪽 자리수에 해당하는 숫자를 count 변수에 대응시켜 숫자를 세주면 됩니다. 따라서, number % 10을 통해 해당 수의 가장 오른쪽 자리수를 추출한 뒤 리스트 자료형의 인덱싱을 활용해서 해당 숫자의 개수를 1을 늘려줍니다. 그리고 number //= 10을 통해서 가장 오른쪽 자리수를 제외시킨 새로운 숫자를 만들어주는 것이죠.
이를 계속 반복하다가 만약 number == 0이 된다면 이제 모든 자리수를 확인했다는 뜻이므로 반복문을 이용해서 해당 숫자에 쓰인 숫자의 개수를 출력하고 break 구문으로 while문을 탈출해주시면 됩니다.
참고자료 및 그림출처
728x90
반응형
'Programming > Coding Problem' 카테고리의 다른 글
BOJ 1546번 : 평균 (0) | 2022.06.12 |
---|---|
BOJ 3052번 : 나머지 (0) | 2022.06.11 |
BOJ 2562번 : 최댓값 (0) | 2022.06.10 |
BOJ 10818번 : 최소, 최대 (0) | 2022.06.09 |
BOJ 1110번 : 더하기 사이클 (0) | 2022.06.08 |