일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Number Theory
- Math
- 코딩테스트
- Counting
- Class
- Matrix
- implement
- Data Structure
- two pointers
- Tree
- dynamic programming
- 파이썬
- Method
- database
- java
- greedy
- Binary Tree
- SQL
- Binary Search
- 코테
- 구현
- bit manipulation
- sorting
- array
- 자바
- string
- simulation
- Stack
- hash table
- geometry
- Today
- Total
목록hash (12)
코린이의 소소한 공부노트
화은이는 이번 영어 시험에서 틀린 문제를 바탕으로 영어 단어 암기를 하려고 한다. 그 과정에서 효율적으로 영어 단어를 외우기 위해 영어 단어장을 만들려 하고 있다. 화은이가 만들고자 하는 단어장의 단어 순서는 다음과 같은 우선순위를 차례로 적용하여 만들어진다. (1) 자주 나오는 단어일수록 앞에 배치한다. (2) 해당 단어의 길이가 길수록 앞에 배치한다. (3) 알파벳 사전 순으로 앞에 있는 단어일수록 앞에 배치한다 M보다 짧은 길이의 단어의 경우 읽는 것만으로도 외울 수 있기 때문에 길이가 M이상인 단어들만 외운다고 한다. 화은이가 괴로운 영단어 암기를 효율적으로 할 수 있도록 단어장을 만들어 주자. 1. 입력 - 첫째 줄에는 영어 지문에 나오는 단어의 개수 N과 외울 단어의 길이 기준이 되는 M이 공..
수많은 마라톤 선수들이 마라톤에 참여하였다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였다. 1. Input, Output, Example - 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 반환 2. Constraint 1) 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하 2) completion의 길이는 participant의 길이보다 1 작다. 3) 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있다. 4) 참가자 중에는 동명이인이 있을 수 있다. 3. Code 1) 첫 코드 import java.util.*; class Soluti..
1. 입력 - 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. 2. 출력 - 첫째 줄에 S의 서로 다른 부분 문자열의 개수를 출력한다. - 부분 문자열은 S에서 연속된 일부분을 말하며, 길이가 1보다 크거나 같아야 한다. 3. 코드 import java.util.*; class Main{ public static void main(String[] args){ String s = new Scanner(System.in).next(); HashSet set = new HashSet(); for(int i=1 ; i
댄스 대회에 총총이가 출전하게 되었다. 총총이는 무지개 댄스를 춘다. 무지개 댄스를 추지 않고 있던 사람이 무지개 댄스를 추고 있던 사람을 만나게 된다면, 만난 시점 이후로 무지개 댄스를 추게 된다. 기록이 시작되기 이전 무지개 댄스를 추고 있는 사람은 총총이 뿐이다. 1. 입력 - 첫번째 줄에는 사람들이 만난 기록의 수 N(1
오픈 채팅방에 새로운 사람이 들어오면 곰곰티콘으로 인사한다. 채팅방에 있는 사람들은 새로운 사람이 입장한 후 처음 채팅은 반드시 곰곰티콘이다. 그 외의 기록은 채팅을 친 사람의 닉네임이다. 1. 입력 - 첫 번째 줄에는 채팅방의 기록 수를 나타내는 정수 N이 주어진다. (1
1. 입력 - 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. - 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어진다. - 각 집합의 원소의 개수는 200,000을 넘지 않으며, 모든 원소의 값은 100,000,000을 넘지 않는다. 2. 출력 - 첫째 줄에 대칭 차집합의 원소의 개수를 출력한다. 3. 코드 import java.util.*; import java.io.*; class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReade..
1. 입력 - 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. - 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 M개의 줄에 걸쳐 보도 못한 사람의 이름이 순서대로 주어진다. - 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. - N, M은 500,000 이하의 자연수이다. - 듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다. 2. 출력 - 듣보잡의 수와 그 명단을 사전순으로 출력한다. 3. 코드 import java.util.*; import java.io.*; class Main { public static void main(String[] args) throws IOExcep..
1. 입력 - 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. - 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. - 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. - 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 2. 출력 - 둘째 줄에 입력으로 주어진 M개의 수에 대해서, 넷째 줄에 적힌 숫자 카드를 상근이가 몇 개 가지고 있는지를 공백으로 구분해 출력한다. 3. 코드 i..
1. 입력 - 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어진다. - N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. - 둘째 줄부터 N개의 줄에 포켓몬의 번호가 1번인 포켓몬부터 N번에 해당하는 포켓몬까지 한 줄에 하나씩 입력으로 들어온다. - 포켓몬의 이름은 모두 영어로만 이루어져있고, 첫 글자만 대문자이고, 나머지 문자는 소문자로만 이루어져 있다. 일부 포켓몬은 마지막 문자만 대문자일 수도 있다. - 포켓몬 이름의 최대 길이는 20, 최소 길이는 2 - 그 다음 줄부터 총 M개의 줄에 내가 맞춰야하는 문제가 입력으로 들어온다. - 문제가 알파벳으로만 들어오면 포켓몬 번호를 말해야 하고, 숫자로만 들어오면 포켓몬 번호에 해당..
1. 입력 - 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 10^6) - 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 출근, "leave"인 경우는 퇴근이다. - 회사에는 동명이인이 없으며, 대소문자가 다른 경우에는 다른 이름이다. - 사람들의 이름은 알파벳 대소문자로 구성된 5글자 이하의 문자열이다. 2. 출력 - 현재 회사에 있는 사람의 이름을 사전 순의 역순으로 한 줄에 한 명씩 출력한다. 3. 코드 import java.util.*; import java.io.*; class Main { public static void main(String[] args) throws ..