일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코테
- Stack
- 파이썬
- Binary Tree
- greedy
- Matrix
- dynamic programming
- Method
- java
- Class
- Math
- Tree
- Data Structure
- Number Theory
- geometry
- two pointers
- 구현
- array
- Binary Search
- 자바
- hash table
- SQL
- database
- bit manipulation
- sorting
- simulation
- string
- implement
- 코딩테스트
- Counting
- Today
- Total
목록Data Structure (16)
코린이의 소소한 공부노트
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 ..
1. 개념정리 1) 트리: 값을 가진 노드(node)가 엣지(edge)로 연결되어 있는 구조 - 상위 노드를 부모, 하위 노드를 자식이라 부른다. - 최상위 노드는 루트(root)라고 부른다. - 부모 노드에 자식 노드가 0~n개 연결되어 있는 구조 2) 이진 트리(binary tree): 자식 노드가 최대 2개인 트리 3) 이진 탐색 트리(binary search tree): 부모의 왼쪽에는 부모의 값보다 작거나 같은 값을 가진 노드가, 오른쪽에는 크거나 같은 값은 가진 노드가 있는 트리 2. 구현 코드 class Node{ // 정수 값을 담는 노드 protected Node left; protected Node right; protected int value; Node(int value){ this..
1. 입력 - 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. - 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. - 다음 M개의 줄에는 검사해야 하는 문자열들이 주어진다. - 입력으로 주어지는 문자열은 알파벳 소문자로만 이루어져 있으며, 길이는 500을 넘지 않는다. 집합 S에 같은 문자열이 여러 번 주어지는 경우는 없다. 2. 출력: 첫째 줄에 M개의 문자열 중에 총 몇 개가 집합 S에 포함되어 있는지 출력한다. 3. 코드 import java.util.*; import java.io.*; class Main { public static void main(String[] args) throws IOException { Buff..