๋์ด๋ : ๊ณจ๋ 4
๊ฑธ๋ฆฐ ์๊ฐ : 20๋ถ
๋ฌธ์
์ ํ๋ฒํธ ๋ชฉ๋ก ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ
์ ํ๋ฒํธ ๋ชฉ๋ก์ด ์ฃผ์ด์ง๋ค. ์ด๋, ์ด ๋ชฉ๋ก์ด ์ผ๊ด์ฑ์ด ์๋์ง ์๋์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ํ๋ฒํธ ๋ชฉ๋ก์ด ์ผ๊ด์ฑ์ ์ ์งํ๋ ค๋ฉด, ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์์ด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด, ์ ํ๋ฒํธ ๋ชฉ๋ก์ด ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์
- ๊ธด๊ธ์ ํ: 911
- ์๊ทผ: 97 625 999
- ์ ์: 91 12 54 26
์ด ๊ฒฝ์ฐ์ ์ ์์ด์๊ฒ ์ ํ๋ฅผ ๊ฑธ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค. ์ ํ๊ธฐ๋ฅผ ๋ค๊ณ ์ ์์ด ๋ฒํธ์ ์ฒ์ ์ธ ์๋ฆฌ๋ฅผ ๋๋ฅด๋ ์๊ฐ ๋ฐ๋ก ๊ธด๊ธ์ ํ๊ฐ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์, ์ด ๋ชฉ๋ก์ ์ผ๊ด์ฑ์ด ์๋ ๋ชฉ๋ก์ด๋ค.
ํ์ด
- b+tree ์ฌ์ฉ
์ฝ๋
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Node {
int num;
bool isHere;
Node* next[10] = { nullptr };
Node(int n, bool b) {
num = n;
isHere = b;
}
};
Node* head[10]; // ์์ ๋ฒํธ ๋
ธ๋
bool pushTree(string str) {
Node* previous = head[str[0] - '0'];
for (int i = 1; i < str.size(); i++) {
if (previous->isHere) {
// ์ผ๊ด์ฑ o
return false;
}
int number = str[i] - '0';
Node* tmp;
if (previous->next[number] == nullptr) {
// ์๋ค๋ฉด ๋ง๋ค๊ธฐ
tmp = new Node(number, false);
previous->next[number] = tmp;
}
else {
// ์๋ค๋ฉด ๊ธฐ์กด ๊ฒ ๋ฑ๋ก
tmp = previous->next[number];
if (i == str.size() - 1) {
// ๊ธฐ์กด์ ์๋ ๋
ธ๋์ธ๋ฐ, ๋ง์ง๋ง์ด๋ฉด ์ข
๋ฃ => sort ์ํ๋ ๋์
return false;
}
}
previous = tmp;
}
previous->isHere = true;
return true;
}
bool compare(string a, string b) {
return a.size() < b.size();
}
int main() {
// 11์ 20๋ถ ์์
// b+tree
// ๋ง์๋ 9๊ฐ
// ์ซ์, ์ํ ๋ฒํธ๊ฐ ์๋์ง, ๋ค์ ์ซ์ ๋
ธ๋ ์งํฉ => ๋ถ๋ชจ ๋
ธ๋์ ์ซ์๊ฐ ์์ผ๋ฉด ์๋จ
int t; cin >> t;
while (t--) {
int n; cin >> n;
vector<string> phoneNumList;
for (int i = 0; i < n; i++) {
string tmp; cin >> tmp;
phoneNumList.push_back(tmp);
}
// sort(phoneNumList.begin(), phoneNumList.end(), compare); //
for (int i = 0; i < 10; i++) {
head[i] = new Node(i, false);
}
bool flag = false;
for (int i = 0; i < n; i++) {
if (!pushTree(phoneNumList[i])) { // ์ผ๊ด์ฑ ์์
cout << "NO" << '\n';
flag = true;
break;
}
}
if (!flag) {
cout << "YES" << '\n';
}
}
}
๊ฐ์
- unordered_map์ผ๋ก ๋ฐ๊พธ์ด ๋ณด์์ง๋ง ์๊ฐ์ด ๋ ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ 2๋ฐฐ๊ฐ ๋จ
- sort์ compareํจ์๋ฅผ ๊ธธ์ด๋ง์ผ๋ก ๋ฐ๊พธ๋ ๊ณต๊ฐ, ์๊ฐ ๋ณต์ก๋ ๋ชจ๋ ์กฐ๊ธ ๊ฐ์ ๋จ
- sort๋ฅผ ์์ ๊ณ ๊ธธ์ด๊ฐ ๊ธด ๊ฒ์ ๋จผ์ ํด๋ ์ฒดํฌํ ์ ์๋๋ก ์กฐ๊ฑด๋ฌธ์ ํ๋ ์ถ๊ฐํ๋๋ ์๊ฐ๋ณต์ก๋ ์ฝ๊ฐ ๊ฐ์ ๋จ
๊ฒฐ๊ณผ
์์ด๋ | ๋ฉ๋ชจ๋ฆฌ | ์๊ฐ | ์ธ์ด |
---|---|---|---|
gmldms784 | 91592 | 184 | C++17 / ์์ |
'Algorithm ๋ฌธ์ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++] BOJ 19535 :: ใทใทใทใ (0) | 2021.07.11 |
---|---|
[c++] BOJ 3584 :: ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณตํต ์กฐ์ (0) | 2021.07.03 |
[c++] BOJ 1600 :: ๋ง์ด ๋๊ณ ํ ์์ญ์ด (0) | 2021.06.25 |
[c++] BOJ 1194 :: ๋ฌ์ด ์ฐจ์ค๋ฅธ๋ค ๊ฐ์ (0) | 2021.06.02 |
[c++] BOJ 2250 :: ํธ๋ฆฌ์ ๋์ด์ ๋๋น (0) | 2021.06.02 |
Comment