백준

    자바(Java) 알고리즘 문제풀이 절댓값 힙[백준 / 우선순위 큐]

    11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 풀이 코드 우선순위 큐를 연습할 수 있는 문제로 PriorityQueue 를 사용해서 오름차순 출력을 뽑아내는 문제이다. 절댓값이 같은 경우에서 정렬의 재정의가 필요한데, PriorityQueue 의 인자로 Comparator 를 사용할 수 있으므로 활용하면 된다. 먼저 Math.abs() 메서드를 통해 절댓값을 구하고, 오름차순에 알맞게 정의를 해준다. abs1 이 abs2 보다 큰 경우 양수 즉, 자리바뀜이 일어나고, 음수일 때는 자리바뀜..

    자바(Java) 알고리즘 문제풀이 동전0 [백준 / 그리디]

    11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 풀이 코드 전형적인 그리디 문제로 가능한 큰 동전으로 연산하며 가능한 최소한의 동전 갯수를 구하는 문제이다. 그리디로 접근 시 주의해야할 점이 있는데, 문제 설명을 보면 (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 라고 명시 되어있는 것을 볼 수 있다. 쉽게 말하자면 각 동전의 가치는 서로 배수관계에 있다는 뜻이며 이 입력이 보장되기 때문에 그리디로..

    백준 12847번 꿀 아르바이트 (실버 4)

    Sliding Window 알고리즘을 통해 풀이했다. 먼저 0번 인덱스 부터 M까지 인덱스를 모두 더해서 창을 하나 만들고 그 값을 Sum 에 담는다. 이후 창을 한 칸씩 밀고 나가면서 인덱스를 모두 더한 값을 이전의 Sum 값과 비교한 뒤, 최대 값을 Result 에 담아 출력하면 끝. package backjoonsliver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BaekJoon12847 { public static void main(String[] args) throws IOExceptio..

    백준 11728번 배열 합치기 (실버 5)

    Two Pointers 알고리즘을 활용해서 풀었다. Scanner 로 풀이하니 시간초과, BufferedReader 로 바꿔도 시간초과, BufferedWriter 까지 사용해서 겨우 통과했다 😵‍💫 각 배열마다 Pointer 를 하나 씩 부여하고 Pointer 가 가리키는 인데스를 비교하면서 값이 더 작은 것을 answer 리스트에 추가한다. 하나의 배열만큼 다 돌았으면, 비교할게 없으므로 나머지 배열을 전부 answer 에 다시 추가하면 끝 ! 먼저 배열을 오름차순으로 정렬해서 풀어야 이렇게 풀어도 문제가 없다. package backjoonsliver; import java.io.*; import java.util.ArrayList; import java.util.Arrays; import java..

    백준 10757번[수학] 큰 수 A+B

    1) Buffered 와 BigInteger Class를 이용한 풀이 ● BigInteger Class를 사용하기 위해선 import가 필요하다. ● 입력을 공백으로 띄워받기 위해 StringTokenizer 클래스를 사용, Token을 각각 BigInteger 객체 참조변수에 저장한다. ● BigInteger은 문자를 받기 때문에 연산자를 사용할 수 없다. 대신 내장돼있는 add 메소드를 이용해서 참조변수에 저장된 값을 더해준 뒤 출력하면 끝. ● 아래 코드처럼 해도 무방하다. 단 초기화는 문자로 해야한다. import java.io.*; import java.math.BigInteger; import java.util.StringTokenizer; public class Back_10757 { pub..