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

๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[C++/PGS] Lv.2 : ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก (ํ•ด์‹œ)

https://school.programmers.co.kr/learn/courses/30/lessons/42577

 

๋ฌธ์ œ ์„ค๋ช…

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

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

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

 


 

์‰ฌ์šด ๋ฌธ์ œ์ด์ง€๋งŒ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ์ ์ˆ˜๊ฐ€ ๊ณ„์† ๊นŽ์˜€๋˜ ๋ฌธ์ œ!!

์งˆ๋ฌธ๋“ค ์ค‘ ์–ด๋–ค ๋ถ„์˜ ์นœ์ ˆํ•œ ํ’€์ด์—์„œ ๊ทธ ํ•ด๋‹ต์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

thanks to

 

์ •๋ ฌ์„ ํ•œ ํ›„ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด,

"119"์™€ "1190"์„ ๋น„๊ตํ•˜๋ฉด ์ ‘๋‘์–ด์ด๋ฏ€๋กœ ๋‹ค์Œ ๊ฐ’๋„ ๋น„๊ตํ•˜๋ฉด ๋˜๋Š”๋ฐ

"119"์™€ ๊ทธ ๋‹ค์Œ ๊ฐ’์ธ "1291"์„ ๋น„๊ตํ•˜๋ฉด ์ ‘๋‘์–ด๊ฐ€ ์•„๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด "1291"์˜ ๋‹ค์Œ ๊ฐ’๋“ค์€ ๋‹น์—ฐํžˆ "119"๋ฅผ ์ ‘๋‘์–ด๋กœ ๊ฐ€์ง€์ง€ ์•Š์„ ๊ฒƒ์ž„.

์™œ๋ƒ๋ฉด?

sort ์ •๋ ฌ ์‹œ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ ์ˆซ์ž ๊ธฐ์ค€ ์ •๋ ฌ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ •๋ ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค!! (์ž˜ ์ƒ๊ฐํ•ด๋ณผ ๊ฒƒ)

๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์ด ์ˆซ์ž์ธ ๊ฒฝ์šฐ, ๋ฌธ์ž์—ด ์ •๋ ฌ ์‹œ  "11" > "112" > "12" > "123" ... ์ด๋‹ค

 

๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋น„๊ตํ•˜๋‹ค๊ฐ€ ์ ‘๋‘์–ด๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜๋ณต๋ฌธ์— break;๋ฅผ ๊ฑธ์–ด์ฃผ๋ฉด ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ!!

 

 

๋‚˜์˜ ํ’€์ด

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

bool solution(vector<string> phone_book) {
    sort(phone_book.begin(), phone_book.end());
    for(int i=0; i<phone_book.size()-1;++i){
        string a = phone_book[i];
        for(int j=i+1;j<phone_book.size();++j){
            string b = phone_book[j].substr(0,a.size());
            if(a==b) return false;
            else break;
        }
    }
    return true;
}