반응형
문제
문제 출처: https://www.acmicpc.net/problem/2577
코드
#1. 일일이 구하기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
int cnt0 = 0, cnt1 = 0, cnt2 = 0, cnt3 = 0, cnt4 = 0, cnt5 = 0, cnt6 = 0, cnt7 = 0, cnt8 = 0, cnt9 = 0;
String result = String.valueOf(num1 * num2 * num3); //세 수를 곱한 값을 문자열로 변환해 result변수에 저장
String num [] = result.split(""); //배열에 한 글자씩 저장
for(int i = 0; i < num.length; i++) {
switch(num[i]) {
case "0":
cnt0++;
break;
case "1":
cnt1++;
break;
case "2":
cnt2++;
break;
case "3":
cnt3++;
break;
case "4":
cnt4++;
break;
case "5":
cnt5++;
break;
case "6":
cnt6++;
break;
case "7":
cnt7++;
break;
case "8":
cnt8++;
break;
case "9":
cnt9++;
break;
}
}
System.out.println(cnt0);
System.out.println(cnt1);
System.out.println(cnt2);
System.out.println(cnt3);
System.out.println(cnt4);
System.out.println(cnt5);
System.out.println(cnt6);
System.out.println(cnt7);
System.out.println(cnt8);
System.out.println(cnt9);
sc.close();
}
}
각 줄에 해당하는 cnt 변수를 일일이 만들어서 카운트를 증가시키고 출력하는 코드. 중복되는 부분이 너무 많다.
#2. charAt() 함수 사용
*charAt(i): 인덱스 i에 해당하는 유니코드 단일문자 반환
import java.util.Scanner;
public class NumberCnt {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
String result = String.valueOf(num1 * num2 * num3);
int cnt[] = new int[10]; //0 ~ 9까지 각 줄의 cnt값을 저장할 배열
for(int i = 0; i < result.length(); i++) {
cnt[result.charAt(i) - '0']++;
//result 변수의 인덱스 i의 유니코드 값을 int형으로 바꿔준다.
//해당 int 값을 인덱스로 갖는 cnt배열의 값을 +1해준다.
//ex. result의 첫번째 값이 3이었다면: cnt[3]의 값을 +1
}
for(int i = 0; i < cnt.length; i++) {
System.out.println(cnt[i]);
}
sc.close();
}
}
해당 로직을 생각해 내기가 힘듬.
https://rightbellboy.tistory.com/41 님의 코드를 참고했음.
추가
자바 변수 선언 및 배열 생성, 초기화
반응형
'Problem Solving > 백준' 카테고리의 다른 글
[백준 알고리즘] 15596: 정수 N개의 합 풀이(자바) (0) | 2021.08.03 |
---|---|
[백준 알고리즘] 4344: 평균은 넘겠지 풀이(자바) (0) | 2021.08.03 |
[백준 알고리즘] 8958: OX퀴즈 풀이(자바) (0) | 2021.08.02 |
[백준 알고리즘] 1546: 평균(자바) (0) | 2021.08.01 |
[백준 알고리즘] 3052: 나머지 풀이(자바) (0) | 2021.08.01 |
[백준|자바] 2884: 알람시계 (if문 활용) (0) | 2020.11.09 |