본문 바로가기
Computer Science/Algorithm

[JAVA] 숫자의 개수

by soro.k 2022. 3. 6.

https://st-lab.tistory.com/45?category=833672 

 

[백준] 2577번 : 숫자의 개수 - JAVA [자바]

https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다. www.acmicpc.net 문제 문제..

st-lab.tistory.com

*해당 포스팅은 상단에 링크된 포스팅을 바탕으로 개인 공부 목적을 위해 작성되었으므로 자세한 내용은 위 링크를 확인해 주시기 바랍니다.


알고리즘 시간복잡도는 시간 날 때 공부해서 정리해두기.

https://hanamon.kr/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-time-complexity-%EC%8B%9C%EA%B0%84-%EB%B3%B5%EC%9E%A1%EB%8F%84/

 

[알고리즘] Time Complexity (시간 복잡도) - 하나몬

⚡️ Time Complexity (시간 복잡도) Time Complexity (시간 복잡도)를 고려한 효율적인 알고리즘 구현 방법에 대한 고민과 Big-O 표기법을 이용해 시간 복잡도를 나타내는 방법에 대해 알아봅시다. ❗️효

hanamon.kr

 

 

상단 포스팅 예제 코드 1

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
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);
		}
 
	}
}

아예 인덱스 값을 증가시켜서 그 값을 출력한다. 아직 시간복잡도에 대해 공부하기 전이지만 상단 포스팅 상에서 첫 번째 코드에서는 이중 for문을 돌려서 count값을 증가시키고 내부 for문이 끝날 때 바로 출력해 줬는데 그 방법에 비해 알고리즘상으로 속도가 빠르다고 했다.

 

세 번째 코드는 내가 전혀 생각 못했던 나머지, 몫 연산을 활용한 코드였다.

 

 

 

상단 포스팅 예제 코드 2

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
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);
		}
	}
}

 

난이도를 떠나서 한 문제를 보더라도 다양하게 접근하려고 생각을 더 많이 해야겠다.

 

 

 

 

'Computer Science > Algorithm' 카테고리의 다른 글

[JAVA] OX퀴즈  (0) 2022.03.08
[JAVA] 나머지  (0) 2022.03.08
[JAVA] 최소, 최대  (0) 2022.03.04
[JAVA] A+B - 4  (0) 2022.03.03
[JAVA] A+B - 5  (0) 2022.03.03