๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Problem Solving/C ++

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก (C++)

by oliviarla 2022. 6. 4.

๋ฌธ์ œ ์„ค๋ช…

์ „ํ™”๋ฒˆํ˜ธ๋ถ€์— ์ ํžŒ ์ „ํ™”๋ฒˆํ˜ธ ์ค‘, ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.
์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒฝ์šฐ, ๊ตฌ์กฐ๋Œ€ ์ „ํ™”๋ฒˆํ˜ธ๋Š” ์˜์„์ด์˜ ์ „ํ™”๋ฒˆํ˜ธ์˜ ์ ‘๋‘์‚ฌ์ž…๋‹ˆ๋‹ค.

  • ๊ตฌ์กฐ๋Œ€ : 119
  • ๋ฐ•์ค€์˜ : 97 674 223
  • ์ง€์˜์„ : 11 9552 4421

์ „ํ™”๋ฒˆํ˜ธ๋ถ€์— ์ ํžŒ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด phone_book ์ด solution ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์–ด๋–ค ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฉด false๋ฅผ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด true๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ
  • phone_book์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 1,000,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    • ๊ฐ ์ „ํ™”๋ฒˆํ˜ธ์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 20 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    • ๊ฐ™์€ ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ์ค‘๋ณตํ•ด์„œ ๋“ค์–ด์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ๋ถ„์„

ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ ์ตœ๋Œ€ํ•œ ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ’€๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ์‰ฝ๊ฒŒ ํ’€๋ฆฌ์ง€ ์•Š์•˜๋‹ค.

ํ’€์ด๋ฒ•์„ ์ฐพ์•„๋ณด๋‹ˆ ๋ชจ๋“  ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ํ•ด์‹œ์— ๋„ฃ์–ด๋‘” ํ›„, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ผ์ผ์ด substrํ•ด์„œ ํ•ด์‹œ์—์„œ ์ ‘๋‘์–ด๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ‘ธ๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค.

 

๋ง‰์—ฐํžˆ ์–ด๋ ต๊ฒŒ๋งŒ ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ ์ฝ”๋“œ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ์—„์ฒญ ๊ฐ„๋‹จํ–ˆ๋‹ค.

#include <bits/stdc++.h>

using namespace std;

bool solution(vector<string> phone_book) {
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    unordered_map<string, int> um;
    bool answer = true;
    
    for(auto e: phone_book){
        um[e]++;
    }
    
    for(int i=0;i<phone_book.size();i++){
        for(int j=0;j<phone_book[i].size();j++){
            if(um.find(phone_book[i].substr(0,j))!=um.end())
                answer = false;
        }
    }
    
    return answer;
}

๋Œ“๊ธ€