문제
소스코드
#include <string>
#include <vector>
#include<iostream>
using namespace std;
bool solution(vector<string> phone_book) {
bool answer = true;
bool is_stop = false;
for (auto i = phone_book.begin(); i != phone_book.end(); ++i) {
if (is_stop)break;
for (auto j = i + 1; j != phone_book.end(); ++j) {
std::string toWord = *i;
std::string fromWord = *j;
//1. 사이즈 만큼만 2번을 잘라내자
if (i->size() < j->size()) {
fromWord = { j->begin(),j->begin() + i->size() };
}
else {
toWord = { i->begin(),i->begin() + j->size() };
}
if (fromWord == toWord) {
answer = false;
is_stop = true;
}
}
}
return answer;
}
후기
문제는 해쉬태그 인대 해쉬를 사용하지 않아도 풀린다..
이중 for문을 사용해서 했는데 다른 사람이 푼 문제를 보니 sort를 해서 한 번만 돌 수 있게 푼 것도 있었다 그런 생각 조차 하지 못했다. 좀 최적화해서 올리고 싶었지만 풀었던 그대로를 올리는 게 더 나을 거 같아서 통과한 그대로 올렸다.
substr()이라는 좋은 함수가 있는지도 몰랐다. 문자열 처리는 얼마나 많은 string 함수를 알고있냐가 핵심인 거 같다.
문자열 처리에 약한만큼 풀기에는 좋은문제였다.
출처 및 레퍼런스
문제 링크:https://programmers.co.kr/learn/courses/30/lessons/42577
'온라인 코딩 > 연관 컨테이너(associate container)' 카테고리의 다른 글
[백준] 11728번 배열 합치기 (0) | 2021.02.17 |
---|---|
[프로그래머스] 이중우선순위큐 (0) | 2020.10.02 |
[백준] 10816번 숫자 카드 2 (0) | 2020.07.03 |
[프로그래머스] 완주하지 못한 선수 (0) | 2020.02.20 |