일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Back tracking
- 모의SW역량테스트
- 알고리듬
- Python
- Trie
- Algorithm
- 알고리즘
- 시뮬레이션
- BFS
- hash table
- Bruth Force
- Priority Queue
- 코딩테스트
- spring boot
- 코테
- boj
- Data Structure
- Vue.js
- JavaScript
- programmers
- SQL
- CSV
- gpdb
- 구현
- SWEA
- django
- Linked list
- DFS
- aws
- GitHub
- Today
- Total
목록boj (42)
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..
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/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..
url: https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 풀이 핵심 1. 기존에는 stack + queue 로 풀이했다면 이번에는 double linked list를 이용해 풀이해보고자 한다. double linked list를 사용하는 이유는 꼬리를 자르는 경우 (꼬리를 잘라야 하는 경우 꼬리의 이전(post)이 꼬리가 되게 하고 꼬리를 잘라야 한다) 때문에 그렇다. 2. SNAKE 구조체와 make, cut_tail 함수를 다음과 같이 만들어 준다..
url: https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 풀이 핵심 1. 본 문제는 bfs 문제로 head 만을 이용한 linked list로 쉽게 풀 수 있다. 기본적으로 list의 들어오는 순서가 중요한 경우가 많으므로 이번엔 tail을 가지고 있는 linked list로 풀이해보고자 한다. 풀이에 대한 내용은 head만을 이용한 linked list 링크를 참조하자 2. head, tail을 가지고 있는 linked list 구조체 struct..
Linked List 활용 문제 (문제 풀이들은 Pro = B형 시험 준비자들을 위한 것으로 dfs/bfs에 대한 설명은 따로 하지 않았다) 1. linked list를 활용한 bfs/dfs 문제 풀이 pb.url: https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 2. linked list를 활용한 bfs/dfs 문제 풀이 pb.url: https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스..
url: https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 풀이 핵심 1. dfs/bfs 문제 2. 문제는 매우 간단하지만 Pro 시험에서 Linked List 자료구조는 필수로 구현할 줄 알아야 하므로 Linked List를 이용해 풀이해보고자 한다. 이 문제는 바이러스 문제와 달리 초기화를 해줘야 한다. linked list 구현은 바이러스 문제와 같고 (Tail 포인터를 사용하지 않고) 초기화 함수만 추가된 것이다. 3. linked lis..
url: https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 풀이 핵심 1. bfs 문제 2. 문제는 매우 간단하지만 Pro 시험에서 Linked List 자료구조는 필수로 구현할 줄 알아야 하므로 Linked List를 이용해 풀이해보고자 한다. 3. Linked List는 추가 연결이 필요할 때 연결 끝 부분 (Tail) 에 추가해줘야 하는 경우, 즉 list의 연결 순서가 중요할 경우 tail을 알 수 있도록 해서 tail 다음에 추가로 노드 연결..