๐Ÿ’  Cpp/[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ณ ๋“์  Kit

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

์„ ๋‹ฌ 2025. 1. 5. 08:04
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

์ „ํ™”๋ฒˆํ˜ธ๋ถ€์— ์ ํžŒ ์ „ํ™”๋ฒˆํ˜ธ ์ค‘, ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒฝ์šฐ, ๊ตฌ์กฐ๋Œ€ ์ „ํ™”๋ฒˆํ˜ธ๋Š” ์˜์„์ด์˜ ์ „ํ™”๋ฒˆํ˜ธ์˜ ์ ‘๋‘์‚ฌ์ž…๋‹ˆ๋‹ค. ๊ตฌ์กฐ๋Œ€ : 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์ž…๋‹ˆ๋‹ค. ์•Œ๋ฆผ 2021๋…„ 3์›” 4์ผ, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ด์ „์— ํ†ต๊ณผํ•˜๋˜ ์ฝ”๋“œ๊ฐ€ ๋” ์ด์ƒ ํ†ต๊ณผํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ’€์ด

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

bool isSub(string a, string b) {
    int aSize = a.size();
    int bSize = b.size();
    
    string shorter = aSize<bSize ? a : b;
    string longer = aSize<bSize ? b : a;
    
    for(int i=0; i<shorter.size(); i++) {
        if(a[i] != b[i]) {
            return false;
        }
    }
    
    return true;
}

bool solution(vector<string> phone_book) {
    int n = phone_book.size();
    
    vector<string>v = phone_book;
    sort(v.begin(), v.end());
    for(int i=1; i<n; i++) {
        if(isSub(v[i-1], v[i])) {
            return false;
        }
    }
    
    return true;
}
๋ฐ˜์‘ํ˜•