분류 전체보기

알고리즘 분류- 자료 구조- 큐 스택 문제랑 동일한데,이번엔 큐다.Queue queue = new LinkedList();로 큐를 생성한 후 조건에 맞게 처리해주면 된다. - 값 추가스택의 push가큐에서는 offer() 또는 add() - 값 삭제스택의 pop이큐에서는 poll() 또는 remove() 예외(Exception)를 터뜨리고 싶다면 add, remove를 사용하고false나 Null로 받고 싶다면 offer, poll을 사용하면 된다. 맨 앞의 값은 스택과 유사하게 peek()으로 알 수 있고헷갈렸던 건 맨 뒤의 값이었는데,push로 추가되는 값을 num에 저장해두면 됐다. import java.util.*;import java.io.*;public class Main { public..
알고리즘 분류- 구현- 자료 구조- 스택 https://www.acmicpc.net/problem/10828문제 제목이 그렇듯,스택 문제다. 문제가 복잡하진 않고 주어진 조건대로스택에서 push, pop, size, peek 등을 활용하면 된다. 작성한 코드는 다음과 같다.import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()..
알고리즘 분류- 자료 구조- 정렬- 이분 탐색- 해시를 사용한 집합과 맵 상근이가 가지고 있는 숫자 카드 개수 N(1 숫자 카드에 적혀 있는 정수가 주어진다. (-10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다.)셋째 줄에는 M(1 넷째 줄에는 M개의 정수가 주어지며 공백으로 구분된다 (-10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다.) 문제를 읽자마자주어지는 정수가 범위가 엄청 크므로 시간 제한에 조심해야 겠다는 생각이 들었다. ArrayList를 만들어 상근이가 가지고 있는 카드 정수들을 모두 넣고M개의 정수를 돌며 ArrayList 안에 있는지 contains 메서드로 확인하면 되지 않을까 생각했다. 그런데 이렇게 문제를 푸니 시간 초과가 났다.아..
수 정렬하기, 수 정렬하기 2 문제와 비슷한 문제다.다만 수 정렬하기 2에 비해(1 주어지는 수는 10,000보다 작거나 같은 자연수로 줄었다. 수 정렬하기 1, 2와 같은 방법 사용하여int 배열을 Arrays.sort()로 정렬하고StringBuilder를 이용하여 출력하는 방법을 사용했다. import java.util.*;import java.io.*;class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.read..
#2750 수 정렬하기와 비슷한 문제다.https://gusdkstudyhard.tistory.com/221사실상 같은 문제긴 한데, 입력값의 범위가 훨씬 커졌다.N도 (1  만약 선택 정렬로 문제를 풀게 되면O(N^2)라서 10^12 -> 시간 제한 2초를 훌쩍 넘게 된다.  수 정렬하기 문제에서 풀었던 방법대로int 배열을 만들어 Arrays.sort를 하고StringBuilder를 사용해 한 번에 출력했다. import java.util.*;import java.io.*;class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new Inp..
알고리즘 분류- 구현- 정렬 https://www.acmicpc.net/problem/2750 브론즈 문제다!N개의 수를 오름차순 정렬해서 한 줄씩 출력하면 된다. ArrayList에 넣어서 Collections.sort하고 한 줄씩 출력하되출력할 때 StringBuilder를 사용해서 시간을 줄여야겠다.라는 생각이 들었고,그대로 바로 코드를 작성했다. Collections.sort 사용import java.util.*;import java.io.*;class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(..
알고리즘 분류- 자료 구조- 정렬- 이분 탐색- 해시를 사용한 집합과 맵 https://www.acmicpc.net/problem/1920 처음 생각나는 가장 쉬운 방법은문제에 주어진 것처럼 int[] 배열 A에N개의 숫자를 넣고 M개의 수들을 순서대로배열A 안에 있는지 확인하는 것이다. 그런데 그렇게 되면 2중으로 최대 N * M 만큼 돌게 되고O(N * M)10^5 * 10^5 = O(10^10)1초에 약 10^8 ~ 10^9번의 연산을 수행할 수 있다고 가정했을 때최악의 경우 10초도 넘을 수 있다! 따라서 다른 방법이 필요하다. HashSet 사용예전에 풀 때 위처럼 N*M 방법을 사용하다가 시간 초과가 나서구글링해 풀었던 방법이다.HashSet을 사용하면 O(N + M)로 문제를 해결할 수 있다..
문제를 풀면서 x좌표 순으로 정렬, 같은 경우 y좌표 순으로 정렬하는 문제가 나왔다. 이를 2차원 배열에 넣어서arr[i][0]에는 x좌표arr[i][1]에는 y좌표를 넣고 정렬하려 했다. 문제 예시처럼3 41 11 -12 23 3이렇게 주어진 경우는int[][] arrays = { {3, 4}, {1, 1}, {1, -1}, {2, 2}, {3, 3} }이런식으로 배열에 값이 들어간다 이런 배열을 x좌표, y좌표 순으로 배열하면{ {1, -1}, {1, 1}, {2, 2}, {3, 3}, {3, 4}}이렇게 될 것이다. Comparator로 구현Arrays.sort(arr, new Comparator() { @Override public int compare(in..