https://www.acmicpc.net/problem/2577
2577번: 숫자의 개수
첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.
www.acmicpc.net
💡 주의 사항
결과값에 0부터 9까지 각 숫자가 몇 번 나오는지 출력해야 함
🗒 풀이
java
1) 나눗셈 사용하기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] quo = new int[10];
int value = (sc.nextInt() * sc.nextInt() * sc.nextInt());
while (value != 0) {
quo[value % 10]++;
value /= 10;
}
for (int q: quo) {
System.out.println(q);
}
sc.close();
}
}
- quo라는 int 배열을 만들고, 0부터 9까지 저장할 수 있도록 크기는 10으로 정함
- 입력받은 세 수를 곱한 value가 0이 될 때까지 while문을 사용하여, 10으로 나눈 값의 나머지를 배열 인덱스에 저장함. 만약 세 개의 숫자를 곱한 값이 27이고, 그 값을 10으로 나눈 몫은 7이 되므로 quo의 인덱스가 7인 항목을 1 증가시켜 주는 것
- 마지막으로 forEach 문을 사용하여 quo에 저장된 값들을 한줄씩 출력
2) charAt 사용하기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int value = (sc.nextInt() * sc.nextInt() * sc.nextInt());
String str = Integer.toString(value);
for (int i = 0; i < 10; i++) {
int count = 0;
for (int j = 0; j < str.length(); j++) {
if ((str.charAt(j) - '0') == i) {
count++;
}
}
System.out.println(count);
}
sc.close();
}
}
- 일단 계산한 값 value을 string으로 변환(Integer.toString(value))
- for문을 두 번 돌리는데, 바깥쪽 for은 0부터 9까지 하나씩 증가시켜주는 것이고, 안쪽 for문은 string으로 반환된 str의 길이만큼 순환하는 것으로, str의 각 자리의 값을 charAt으로 확인하기 위함이다
- 즉, if문에서 볼 수 있듯이 str.charAt(j) - '0'과 i (0 ~ 9) 하나하나 확인하고, count를 증가해서 출력함
- 이 때, '0'을 빼는 이유는 빼지 않을 시, 아스키코드에 대응하는 문자가 나와 결과가 온통 0으로 출력됨
python
from functools import reduce
arr = []
for i in range(3):
arr.append(int(input()))
mul = str(reduce(lambda x, y: x * y, arr))
for i in range(10):
print(mul.count(str(i)))
- arr이란 배열을 만들어서 입력받은 수들 하나하나 넣어줌
- functools의 reduce 함수를 사용해서 각 리스트의 값들을 하나하나 곱해준 것들 string으로 변환한다. java로 했을 때 방법 2와 비슷한 방식을 하기 위해서다.
- 곱한 mul 함수에서 0부터 9까지 몇 개가 들어있는지 count함수를 이용하여 값을 구한 것을 출력한다. 이 때, 매개변수로도 문자열이 들어가야하므로, i에 string 변환을 해준 것을 확인할 수 있다
'알고리즘' 카테고리의 다른 글
[백준] 2739번: 구구단 (java, python) (0) | 2022.07.07 |
---|---|
[백준] 2675번: 문자열 반복(java, python) (0) | 2022.07.07 |
[백준] 2562번: 최댓값(java, python) (0) | 2022.07.04 |
[백준] 2475번: 검증수(java, python) (0) | 2022.07.04 |
[백준] 2439번: 별 찍기 - 2(java, python) (0) | 2022.07.03 |