๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“šAlgorithm ------------/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํ•ด์‹œ/์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก/C++

์ „!ํ™”๋ฒˆํ˜ธ์šฐ

 

๋ฌธ์ œ ์„ค๋ช…

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

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

์ „ํ™”๋ฒˆํ˜ธ๋ถ€์— ์ ํžŒ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด phone_book ์ด solution ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ,

์–ด๋–ค ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฉด false๋ฅผ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด

true๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

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

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

 

phone_book return
["119", "97674223", "1195524421"] false
["123","456","789"] true
["12","123","1235","567","88"] false

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
์•ž์—์„œ ์„ค๋ช…ํ•œ ์˜ˆ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2
ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์‚ฌ์ธ ๊ฒฝ์šฐ๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ๋‹ต์€ true์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3
์ฒซ ๋ฒˆ์งธ ์ „ํ™”๋ฒˆํ˜ธ, “12”๊ฐ€ ๋‘ ๋ฒˆ์งธ ์ „ํ™”๋ฒˆํ˜ธ “123”์˜ ์ ‘๋‘์‚ฌ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ต์€ false์ž…๋‹ˆ๋‹ค.

 


์ฝ”๋“œ

 

#include <string>
#include <vector>
#include <unordered_map>

using namespace std;

bool solution(vector<string> phone_book) {
    bool answer = true;
    if( phone_book.empty() || phone_book.size() > 1000000 )
        return answer;
  unordered_map<string, int> hashMap;
    for( auto elem:  phone_book )
    {
        hashMap[elem] += 1;
    }

    for(int i = 0; i < (int)phone_book.size(); i++) 
    {
        string phone_number = "";
        for(int j = 0; j < (int)phone_book[i].size(); j++) {
            phone_number += phone_book[i][j];
            if(hashMap[phone_number] && phone_number != phone_book[i])
                answer = false;
        }
    }
    
    return answer;
}

 

์ด์ „์— ํ’€์—ˆ๋˜ ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜๋ž‘ ๋น„์Šทํ•œ ๋ฌธ์ œ๋‹ค

๋„ˆ๋ฌด ์ข‹์€ ๋‹ต์•ˆ๋“ค์ด ๋งŽ์•„์„œ ์กฐ๊ธˆ๋งŒ ์ˆ˜์ •ํ•ด์„œ ์˜ฌ๋ ธ๋‹น

 

์šฐ์„  ํ•ด์‰ฌ ๋งต์„ ์‚ฌ์šฉํ•˜์—ฌ phone_book์— ๋Œ€ํ•œ map์„ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค

ํ•ด์‰ฌ ๋งต์€ ์•„๋ž˜ for๋ฌธ์—์„œ phone_number์— ๋Œ€ํ•œ key๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค

 

๋˜ํ•œ C++์—์„œ String์˜ Index์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์„ ์ด์šฉํ•ด์„œ

๋ฌธ์ž์—ด ์ž์ฒด๋ฅผ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š๊ณ  ์ธ๋ฑ์Šค ๋ณ„๋กœ ๊ฒ€์ƒ‰ํ•œ๊ฑฐ๊ฐ€ ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค

 

(int)phone_book ์— ์•ž์— (int)๋ฅผ ๋ถ™์—ฌ์ค€ ์ด์œ ๋Š”

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ง๊ณ  ๋‚ด ์žฅ๋น„์—์„œ makeํ•˜๋‹ˆ๊นŒ warning์ด ๋‚˜์„œ

๋ณด์™„์„ ํ•ด์ฃผ์—ˆ๋‹ค