elesis's haunt
2577 숫자의 개수 본문
*BufferedReader, 이중for(+향상for), 배열 - O(N^2)
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
int b = Integer.parseInt(br.readLine());
int c = Integer.parseInt(br.readLine());
int n0 = 0; int n1 = 0; int n2 = 0; int n3 = 0;
int n4 = 0; int n5 = 0; int n6 = 0; int n7 = 0;
int n8 = 0; int n9= 0;
br.close();
int mul = a*b*c;
String[] strArr = String.valueOf(mul).split("");
int[] intArr = {n0, n1, n2, n3, n4, n5, n6, n7, n8, n9};
for(String strNum : strArr) {
for(int i=0; i<10; i++) {
if( Integer.parseInt(strNum) == i) {
intArr[i]++;
}
}
}
for(int i=0; i<10; i++) {
System.out.println(intArr[i]);
}
}
}
* Scanner, 이중for, 나은 로직 - O(N^2)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int value = (in.nextInt() * in.nextInt() * in.nextInt());
String str = Integer.toString(value);
in.close();
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);
}
}
}
* BufferedReader, 향상for, 나은 로직 - O(N)
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[10];
int val = Integer.parseInt(br.readLine()) * Integer.parseInt(br.readLine()) * Integer.parseInt(br.readLine());
String str = String.valueOf(val);
for (int i = 0; i < str.length(); i++) {
arr[(str.charAt(i) - 48)]++;
}
for (int v : arr) {
System.out.println(v);
}
}
}
* BufferedReader, While, 배열
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int val = Integer.parseInt(br.readLine())*Integer.parseInt(br.readLine())*Integer.parseInt(br.readLine());
int[] arr = new int[10];
while(val!=0) {
arr[val%10]++;
val/=10;
}
for(int result : arr) {
System.out.println(result);
}
}
}
이중 for문은 시간복잡도가 O(N^2)로 좋은 코드가 아니다.
마지막 코드는 String.charAt과 굳이 형변환을 안해도 되는 점이 좋은 코드이다.
(스캐너 외의 두 코드는 속도차이 미미한 편)
'백준~문풀 후 최적화 추가~ > 단계별로 풀어보기' 카테고리의 다른 글
1546 평균 (0) | 2021.09.24 |
---|---|
3052 나머지 (0) | 2021.09.24 |
2562 최댓값 (0) | 2021.09.23 |
10818 최소, 최대 (0) | 2021.09.16 |
1110 더하기 사이클 (0) | 2021.09.16 |
Comments