일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- form
- Django
- web
- django ORM
- MAC
- django rest framework
- 파이썬
- Algorithm
- react
- c++
- 알고리즘 연습
- DRF
- java
- 알고리즘
- 알고리즘 문제
- Baekjoon
- django widget
- es6
- js
- API
- javascript
- AWS
- 알고리즘 풀이
- 장고
- Git
- HTML
- PYTHON
- 파이썬 알고리즘
- CSS
Archives
- Today
- Total
수학과의 좌충우돌 프로그래밍
[C++] BAEKJOON 5052번 전화번호목록 본문
5052번: 전화번호 목록
문제 전화번호 목록이 주어진다. 이때, 이 목록이 일관성이 있는지 없는지를 구하는 프로그램을 작성하시오. 전화번호 목록이 일관성을 유지하려면, 한 번호가 다른 번호의 접두어인 경우가 없어야 한다. 예를 들어, 전화번호 목록이 아래와 같은 경우를 생각해보자 긴급전화: 911 상근: 97 625 999 선영: 91 12 54 26 이 경우에 선영이에게 전화를 걸 수 있는 방법이 없다. 전화기를 들고 선영이 번호의 처음 세 자리를 누르는 순간 바로 긴급전화가
www.acmicpc.net
Trie 자료구조를 사용하는 문제였습니다.
[Algorithm] Trie 자료구조
KMP 알고리즘 에 이어서 문자열에서 검색에 위한 새로운 방법들을 알아보도록 하겠습니다. 이번에 알아볼 내용은 Trie 자료구조입니다. Trie 자료구조 문자열 집합, {AB, ACD, ACEF, ACEG, HB, HC} 에 대해 Trie..
ssungkang.tistory.com
#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