본문 바로가기

java53

[백준] 해시를 사용한 집합과 맵 - 2910번 빈도 정렬 (Java) 문제링크 2910번: 빈도 정렬 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다. www.acmicpc.net 풀이방법 ( 순서를 유지하면서 중복은 허용하지 않으며 값을 갖고있는 자료구조가 필요해 ! ) LinkedHashMap을 활용한다. LinkedHashMap을 정렬하는 메소드도 새로 추가한다. 소스코드 작성방법 숫자를 입력받으면서 이미 맵에 포함되어있으면, 그 값에 1을 더하여 맵의 값을 변경한다. 그렇지 않으면, 맵에 숫자를 추가한다. LinkedHashMap을 정렬하는 메소드를 선언한다. LinkedHashMap을 입력받아 map을 list로 변환한 후 Collections.sort를 활용하여.. 2022. 6. 29.
[백준] 해시를 사용한 집합과 맵 - 13414번 수강신청 (Java) 문제링크 13414번: 수강신청 입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목 www.acmicpc.net 풀이방법 ( 순서를 유지하면서 중복은 허용하지 않는 자료구조가 필요해 !) - LinkedHashSet을 활용한다. 소스코드 작성 방법 학생을 입력받으면서 set에 이미 포함되어있으면 set에 해당 문자열을 제거한다. set에는 항상 입력받은 학생을 추가한다. set을 배열로 변환한다. 만약, 배열의 크기가 k(수강 가능 인원)보다 작으면 k를 배열의 크기로 변경한다. k만큼 출력한다. 소스코드 package baekjoon.array_map.. 2022. 6. 28.
[백준] 해시를 사용한 집합과 맵 - 7785번 회사에 있는 사람 (Java) 문제링크 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 접근한 방법 해시맵 풀이방법 "enter"일 때는 hashmap에 값을 true로 넣어주고 "leave"일 때는 hashmap에 값을 false로 대체한다. hashmap을 배열로 변환하여 정렬을 수행한다. 소스코드 작성 방법 hashmap을 키는 String, 값은 Boolean으로 선언한다. StringTokenizer로 입력을 받아 "enter"일 때 key는 이름으로 값은 true로 put한다. "leave.. 2022. 6. 17.
[백준] 문자열, 스택 - 4949번 균형잡힌 세상(Java) 혹시 ! 다음 문제를 공부하지 않으셨다면, 이 문제를 먼저 풀고 오시는 것을 추천드립니다 👍 2022.05.20 - [자료구조&알고리즘/스택] - [백준] 문자열, 스택 - 9012번 괄호 (Java) 문제링크 링크 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 접근한 방법 문자열, 스택 풀이방법 9012번 문제를 풀었다면, 대괄호처리하는 것만 추가해주면 된다. 여는 소괄호, 대괄호를 만나면 stack에 push 닫는 소괄호를 만났을 때 stack이 비어있거나 peek한 값이 여는 소괄.. 2022. 5. 20.
[백준] 문자열, 스택 - 9012번 괄호 (Java) 문제링크 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 접근한 방법 문자열과 스택을 사용 풀이방법 여는 괄호를 만나면 stack에 push 닫는 괄호를 만났을 때 stack에 여는 괄호가 존재한다면 stack의 값을 pop 여는 괄호가 없다면 실패처리 마지막으로 모든 탐색을 끝냈는데 stack에 남아있다면 실패처리 소스코드 작성 방법 스택과 성공 여부를 판단하는 변수 선언 charAt으로 차례로 각 문자를 탐색 .. 2022. 5. 20.
[백준] 조합 - 2309번 일곱 난쟁이 (Java) 문제링크 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 접근한 방법 - 조합 풀이방법 https://doongjeol.tistory.com/137?category=815887 참조 실수한점 다른 언어도 함께 공부하다보니, result = arr 이렇게 선언해버리는 실수를 하였다. 소스코드 import java.io.*; import java.util.Arrays; public class Q_2309_SevenDwarf { public static int[] result; public static int[] dwarf.. 2022. 2. 21.
[백준] 순열 - 10819번 차이를 최대로 (Java) 문제링크 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 접근한 방법 순열 풀이방법 https://doongjeol.tistory.com/136 참조 소스코드 import java.io.*; import java.util.StringTokenizer; public class Q_10819_MaxDiff { public static int[] data; public static int result; public static void permutation(int[] arr, int n, int r, boolean[] select.. 2022. 2. 21.
부분 집합 (Sub Set) 부분 집합 (Sub Set) $2^n$ 의 경우의 수를 갖는다. 소스 코드 import java.io.*; import java.util.ArrayList; import java.util.List; public class SubSet { public static void subSet(List list, int n, int depth) { if (depth == n) { System.out.println(list); return; } list.add(depth); subSet(list, n, depth + 1); list.remove(list.size() - 1); subSet(list, n, depth + 1); } public static void main(String[] args) throws IOE.. 2022. 2. 21.
조합 (Combination) 조합 (Combination) 서로 다른 n개의 원소 중 r개를 순서 없이 골라낸 것 서로 다른 n개 중 r개를 택하는 조합의 경우의 수는 아래와 같다. 소스코드 import java.util.Arrays; public class Combination { public static void combination(int[] arr, int n, int r, int depth, int idx) { if (depth == r) { System.out.println(Arrays.toString(arr)); return; } for (int i = idx; i < n; i++) { arr[depth] = i; combination(arr, n, r, depth + 1, i + 1); } } public static.. 2022. 2. 20.
순열 (Permutation) 순열 (Permutation) 서로 다른 것들 중 몇 개를 뽑아서 한 줄로 나열하는 것 서로 다른 n개 중 r개를 택하는 순열의 경우의 수는 아래와 같다. nPr = n * (n - 1) * ... * (n - r + 1) n이 12 이상일 경우부터 시간 복잡도가 급격히 상승한다. 소스코드 import java.util.Arrays; public class Permutation { public static void permutation(int[] arr, boolean[] selected, int depth) { if (depth == selected.length) { System.out.println(Arrays.toString(arr)); return; } for (int i = 0; i < sele.. 2022. 2. 20.
[leetcode] 바이너리 - 191번 Number of 1 Bits (Java) 문제링크 Number of 1 Bits - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 접근한 방법 바이너리 풀이방법 먼저, signed와 unsigned의 개념을 알아보자. signed - C/C++ 프로그램 언어에서 정수형 변수 중 부호를 갖는 변수를 선언한다. 정수형 중 음수는 2의 보수 체계를 사용하므로 이 키워드에 의해 부호를 사용할 수 있도록 변수 선언할 수 있다. 그러나 정수형의 변수에서 unsigned가 없으면 음수를 사용할 수 있는 부호를 갖는.. 2021. 10. 31.
[leetcode] 배열 - 238번 Product Of ArrayExceptSelf (Java) 문제링크 Product of Array Except Self - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 접근한 방법 배열 풀이방법 처음에 이중 반복문으로 풀어서 시간초과가 나왔다. 따라서, 블로그를 참조하여 이해할 수 있었다. 소스코드 package leetcode.array; import java.util.EnumSet; public class Q238_ProductOfArrayExceptSelf { public static int[] productEx.. 2021. 10. 30.
반응형