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
*해당 포스팅은 상단에 링크된 포스팅을 바탕으로 개인 공부 목적을 위해 작성되었으므로 자세한 내용은 위 링크를 확인해 주시기 바랍니다.
알고리즘 시간복잡도는 시간 날 때 공부해서 정리해두기.
[알고리즘] 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 |