본문 바로가기

백준24

[백준/BAEKJOON] 10950번 A + B - 3 JAVA 1. a에 테스트 케이스를 몇 번 설정할 것인지 입력한다. 각각의 b,c 를 입력받아 b + c 테스크 케이스만큼 출력한다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a; a = sc.nextInt(); int b; int c; for(int i = 0; i < a; i++) { b = sc.nextInt(); c = sc.nextInt(); System.out.println(b + c); } } } 2021. 8. 17.
[백준/BAEKJOON] 10989번 수 정렬하기3 JAVA 1. Arrays.sort 방법으로 풀기 2. Arrays.sort 를 사용하지 않고 카운팅정렬을 사용하는 방법이다. 자세한 것은 코드를 보면서 이해하면 된다. 참고로 시간복잡도는 O(N + K) 이다. K는 자릿수를 의미하는데 입력데이터가 K 보다 훨 씬 큰경우. 즉 데이터가 많으면 많을 수록 O(N) 에 가깝기 때문에 이상적으로는 O(N) 이라고 보아도 무방하다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { // 수의 범위 (0 ~ 1000.. 2021. 8. 14.
[백준/BAEKJOON] 2751번 수 정렬하기2 JAVA 1. 이 문제는 Arrays.sort 로 풀면 시간초과가 난다. (위는 Java8 기준이다. 참고로 자바의 버전마다 조금씩 다르기 때문에 다른 버전으로 제출하면 통과될 수 있다.) Arrays.sort() 의 경우 dual-pivot Quicksort 알고리즘을 사용한다고 했다. 물론 평균 시간복잡도가 O(nlogn) 이고 매우 빠른 알고리즘인 것은 맞다. 그러나 최악의 경우 시간복잡도는 O(n2) 이라는 점을 기억해야한다. 2. Collections.sort() 를 쓰는 방법이다. Collections.sort() 은 Timsort이다. Timsort 의 경우 합병 및 삽입정렬 알고리즘을 사용한다. 이렇게 두 가지가 섞여있는 정렬 알고리즘을 hybrid sorting algorithm 이라고 하는데, .. 2021. 8. 14.
[백준/BAEKJOON] 2750번 수 정렬하기 JAVA 1. 버블정렬이다. 첫 번째 인덱스부터 시작하여 뒤의 인덱스들의 값들과 비교하여 최솟값들을 차곡차곡 쌓아나가는 방법이다. 가장 구현하기 쉽다는 장점이 있으나 시간복잡도가 O(n2) 으로 그리 좋은 성능의 알고리즘은 아니다. 아마 정렬을 구현해보거나 접해본 분들이라면 한 번 쯤은 보았을 코드다. 2. 가장 간단한 방법으로, Arrays.sort() 메소드를 쓰는 방법이다. Arrays.sort() 는 자바에서 기본으로 제공되는 메소드로, 자체 정렬 알고리즘을 구현 할 필요 없이 sort() 안에 배열만 넣어주면 자동으로 해당 배열이 정렬되어 나온다. Arrays.sort() 의 경우 dual-pivot Quicksort 알고리즘을 쓰고 있기 때문에 시간복잡도는 평균 O(nlogn) 으로 좋은 성능을 내고 .. 2021. 8. 14.
[백준/BAEKJOON] 2577번 숫자의 개수 JAVA 1. BufferedReader 을 쓰는 방식이다. 그리고 BufferedReader 는 문자열로 반환되니 String을 Int 형으로 변환해주어야 한다. String 에서 Int 로 변환하는 메소드는 Integer.parseInt() 다. 2. 이 방법은 첫 번째 방법에 비해 알고리즘상 시간복잡도가 O(N) 이라 훨씬 수행속도가 짧다. 또한 BufferedReader 자체가 Scanner 에 비해 우월한 성능을 지니고 있어 훨씬 좋은 performance 를 보여준다. 알고리즘 방식은 다음과 같다. 먼저 0부터 9까지 체크할 길이 10의 int 배열을 생성한다. (기본 int배열 초기값은 모두 0이다.) 그리고 val 에다가 br.readLine() 으로 읽은 값을 곱해서 저장한다. 그리고 String.. 2021. 8. 14.
[백준/BAEKJOON] 2562번 최댓값 JAVA 1. BufferedReader 을 쓰는 방식이다. 그리고 반드시 자료형 타입을 잘 보아야 한다. BufferedReader 은 기본 반환값이 문자이므로 반드시 Integer.parseInt()로 int 형으로 변환시켜준다. 2. for-each 구문으로 배열의 원소를 하나씩 value 에 저장한 뒤 final_value 와 value 값을 비교하여 value 가 final_value 보다 크면 count 값과 value 값을 각각 저장한다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static void main(String[] ar.. 2021. 8. 14.