일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Priority Queue
- 알고리즘
- Algorithm
- 시뮬레이션
- BFS
- Data Structure
- boj
- 모의SW역량테스트
- Linked list
- aws
- GitHub
- Back tracking
- CSV
- 코딩테스트
- SQL
- 구현
- Bruth Force
- DFS
- SWEA
- gpdb
- django
- 알고리듬
- spring boot
- JavaScript
- hash table
- Trie
- Python
- 코테
- Vue.js
- programmers
- Today
- Total
목록myt-algorithm-practice (59)
hotamul의 개발 이야기

url: https://www.acmicpc.net/problem/5670 5670번: 휴대폰 자판 휴대폰에서 길이가 P인 영단어를 입력하려면 버튼을 P번 눌러야 한다. 그러나 시스템프로그래밍 연구실에 근무하는 승혁연구원은 사전을 사용해 이 입력을 더 빨리 할 수 있는 자판 모듈을 개발 www.acmicpc.net 풀이 핵심 1. Trie 자료구조를 활용한다. 2. Trie root에 문자열을 insert 할 때 문자 ('a' ~ 'z') 가 나온 수를 각 문자마다 체크 한다. ex) "hello", "hell" - "hello" insert하고 난 뒤 - "hell" insert하고 난 뒤 3. search 할 때 post_cnt와 비교하면서 버튼 누를 횟 수를 증가 시킨다. (post_cnt와 다음 ..
url: https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 풀이 핵심 (HashTable 구현 참고) 1. S 집합 문자열 hashTable에 저장 2. find 함수로 hashTable 검색 코드 #define MAXN10000 #define MAX_TABLE10007 #define MAXL26 typedef unsigned long long ull; #include ull getHashCode(const cha..
url: https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 풀이 핵심 1. 문자열 처리 문제로 접두어를 이용해 자료구조를 만들어야 하므로 Trie 자료구조 사용 2. Trie에 번호들을 저장, 탐색하고 문자열이 끝나기 전 isTerminal이 true일 경우 접두어가 존재하는 것이므로 false를 반환한다. 코드 #include #include #define MAX_N10000 #define MAX_L11 int charT..

트라이(Trie)란? 트라이(Trie)의 형태 대해서 Trie: 트라이(Trie)란 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조입니다. 위에 보이는 트리의 루트에서부터 자식들을 따라가면서 생성된 문자열들이 트라이 자료구조에 저장되어 있다고 볼 수 있습니다. 저장된 단어는 끝을 표시하는 변수를 추가해서 저장된 단어의 끝을 구분할 수 있습니다. DFS 형태로 검색을 해보면 사진의 번호에 나와있듯이 to, tea, ted, ten, A, i, in, inn이라는 단어들이 자료구조에 들어가 있음을 알 수 있습니다. 트라이(Trie)의 예시 직접 그린 Trie이며 주황색으로 된 노드들이 입력된 문자열들입니다. 현재 be, bee, can, cat, cd가 들어가 있습니다. 사용목적 목적 사용하..
url: https://www.acmicpc.net/problem/20920 20920번: 영단어 암기는 괴로워 첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단 www.acmicpc.net 풀이 핵심 1. Hash Table을 활용해 단어가 중복되서 나온 것인지 판단한다. Heap에 우선순위 (단어가 나온 횟수, 단어 길이, 알파벳 역순)을 유지 될 수 있도록 해서 마지막에 HeapPop을 이용해 정답을 출력한다. 여기서 단어가 나온 횟수가 클수록, 단어 길이가 길수록 알파벳 역순 일 수록 부모 노드 (1에..
url: https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 풀이 핵심 1. 삼성 B형 대비 우선 순위 큐 (Priority Queue, Heap) 자료구조를 이용해 문제를 풀어보자 (Min Heap으로 대략적인 개념 잡기) 2. 이름, 국/영/수 성적을 담을 구조체와 data를 pool 할 수 있는 datapool, heap을 다음과 같이 만든다. struct Database { char name[11]; int ko, en..
url: https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 풀이 핵심 1. 삼성 B형 시험에 대비해 Hash Table과 Merge Sort를 활용해 본 문제를 풀어보자 Hash Table 구현은 다음 링크를 참조하자. 2. Merge Sort 구현은 피로물든딸기님의 블로그를 참고했다. 코드 #include #define MAX_TABLE100007 #define MAX500005 typedef unsigned long long ull; int..

Definition of Min Heap Complete Binary Tree The value of Parent
Hash Table 활용 문제 (삼성 B형/Pro 문제들은 Hash Table의 Open Address형을 사용할 경우 수많은 충돌을 관리하기 까다롭다 따라서 아래 링크의 Hash Table은 Chaining 방식으로 구현되었다) 1. Hash Table 활용 문자열 관리 문제 pb.url: https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 2. Hash Table + Merge Sort 활용 문자열 관리 문제 pb...
url: https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 풀이 핵심 1. Hash Table을 이용해 포켓몬 이름(key)과 ID(value)를 저장한다. hash 값이 같을 경우 (충돌이 일어날 경우) 링크드 리스트로 연결지어 만든다. 다음과 같이 POKETMON 구조체와 hash 함수를 만든다. #define HASH5381 struct POKETMON { int id; char name[21]; POKETMON..