문제 ( https://www.acmicpc.net/problem/2577 )
나의 풀이
어려워 보였지만, 무난하게 풀었다. 시간이 좀 더 있었으면 더 효율적인 코드를 짰을 것 같다. 다음에 다시 수정해보자!
package baekjunOnlineJudge;
import java.util.Scanner;
public class Bj_2577 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double multiplicationResult = 1;
double million = 1000000;
int[] numberCount = new int[10];
for(int i=0; i<3; i++) {
multiplicationResult *= sc.nextInt();
}
if(multiplicationResult/(100*million) > 1 && multiplicationResult/(100*million) < 10) { // 1억 대 숫자
// System.out.println("multiplicationResult= "+multiplicationResult);
for(int i=0, digit=0, remainder = 10, multiplier=1; i<9; i++, multiplier *= 10) {
digit = (int)(multiplier * multiplicationResult / (100*million)%remainder);
// System.out.println("digit= " + digit);
numberCount[digit]++;
}
}
if(multiplicationResult/(10*million) > 1 && multiplicationResult/(10*million) < 10) { // 1000만 대 숫자
// System.out.println("multiplicationResult= "+multiplicationResult);
for(int i=0, digit=0, remainder = 10, multiplier=1; i<8; i++, multiplier *= 10) {
digit = (int)(multiplier * multiplicationResult / (10*million)%remainder);
// System.out.println("digit= " + digit);
numberCount[digit]++;
}
}
if(multiplicationResult/million > 1 && multiplicationResult/million < 10) { // 100만 대 숫자
// System.out.println("multiplicationResult= "+multiplicationResult);
for(int i=0, digit=0, remainder = 10, multiplier=1; i<7; i++, multiplier *= 10) {
digit = (int)(multiplier * multiplicationResult / (1*million)%remainder);
// System.out.println("digit= " + digit);
numberCount[digit]++;
}
}
for(int i=0; i<10; i++) {
System.out.println(numberCount[i]);
}
}
}
'프로그래밍-학습기록 > 코딩테스트' 카테고리의 다른 글
백준 온라인 저지 | 1546 | 배열: 평균 (0) | 2020.07.28 |
---|---|
백준 온라인 저지 | 3052 | 배열: 나머지 (0) | 2020.07.28 |
백준 온라인 저지 | 2562 | 배열: 최댓값 (0) | 2020.07.27 |
백준 온라인 저지 | 10818 | 1차원 배열: 최소, 최대 (0) | 2020.07.23 |
백준 온라인 저지 | 10996 | 별 찍기 - 21 (0) | 2020.07.22 |