일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- react
- es6
- 장고
- DRF
- django widget
- form
- Django
- Git
- MAC
- 알고리즘
- javascript
- 파이썬
- PYTHON
- 알고리즘 문제
- js
- web
- 알고리즘 연습
- API
- Algorithm
- 알고리즘 풀이
- 파이썬 알고리즘
- 백준
- HTML
- CSS
- django ORM
- c++
- java
- django rest framework
- AWS
- Baekjoon
Archives
- Today
- Total
수학과의 좌충우돌 프로그래밍
[C++] BAEKJOON 5052번 전화번호목록 본문
Trie 자료구조를 사용하는 문제였습니다.
#include <iostream>
#include <cstdio>
using namespace std;
struct Phone {
char tel[10];
};
struct Trie {
bool finish;
Trie *next[10];
Trie() :finish(false){
for (int i=0;i<10;i++)
next[i] = 0;
}
~Trie(){
for (int i=0;i<10;i++)
if (next[i]) delete next[i];
}
void insert(char *key){
if (*key == '\0') finish = true;
else {
int cur = *key - '0';
if (next[cur] == NULL){
next[cur] = new Trie();
}
next[cur]->insert(key+1);
}
}
bool find(char *key){
if (*key == '\0') return false;
if (finish) return true;
int cur = *key - '0';
return next[cur]->find(key+1);
}
};
int main(int argc, const char * argv[]) {
int T;
cin >> T;
for (int t=0;t<T;t++){
int n;
cin >> n;
Phone data[10001] = {0,};
for (int i=0;i<n;i++){
cin >> data[i].tel;
}
int flag = 0;
Trie *root = new Trie();
for (int i=0;i<n;i++)
root->insert(data[i].tel);
for (int i=0;i<n;i++){
if (root->find(data[i].tel)){
flag = 1;
break;
}
}
if (flag) cout << "NO" << "\n";
else cout << "YES" << "\n";
}
return 0;
}
'알고리즘 > C++' 카테고리의 다른 글
[C++] BAEKJOON 10942 팰린드롬? (0) | 2019.09.06 |
---|---|
[C++] BAEKJOON 1890번 점프 (0) | 2019.09.06 |
[C++] BAEKJOON 8901번 화학제품(ACM-ICPC Daejeon 2011) (0) | 2019.08.02 |
[C++] BAEKJOON 8895번 막대배치(ACM-ICPC Daejeon 2012) (2) | 2019.07.31 |
[C++] BAEKJOON 9455번 박스(ACM-ICPC Daejeon 2013) (0) | 2019.07.26 |
Comments