Languages/Java

알고리즘 분류- 구현- 자료 구조- 스택 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..
HashMap을 Value 값으로 정렬하려면 어떻게 해야 할까? Value 기준으로 정렬하기 위해서는List 형태로 Map을 가져와야 한다.Map.entrySet()을 이용해서 Map의 EntrySet을 List 형태로 저장하고 이 EntrySet을 정렬한다.Map map = new HashMap();map.put("a", 3);map.put("b", 2);map.put("c", 1);List> entryList = new ArrayList(map.entrySet); Entry 내장 함수 사용먼저 Map.Entry에 있는 comparingByValue() 함수를 사용하여 정렬할 수 있다.entryList.sort(Map.Entry.comparingByValue());for (Map.Entry entry ..
효딩
'Languages/Java' 카테고리의 글 목록 (4 Page)