일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 브루트포스 알고리즘
- mermaid js
- react
- 정수 삼각형
- 4796
- 2018 KAKAO BLIND RECRUITMENT
- n^2 배열 자르기
- 다이내믹 프로그래밍
- Git Convention
- Hasing
- C++
- 5525
- 프로그래머스
- colorSyntax
- 위클리 챌린지
- 주식 가격
- 구간 합 구하기 4
- js
- 18111
- 깊이 우선 탐색
- javascript
- BOJ
- 소수 체크
- 옵셔널 체이닝 연산자
- 없는 숫자 더하기
- 1620
- codeSyntaxHighlight
- 숫자 문자열과 영단어
- 이분탐색
- 10162
Archives
- Today
- Total
개발하는 kim-hasa
[c++][프로그래머스] 전화번호 목록 본문
https://programmers.co.kr/learn/courses/30/lessons/42577
코딩테스트 연습 - 전화번호 목록
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조
programmers.co.kr
특정 번호가 다른 번호의 접두사인 경우가 있는지 확인하는 문제입니다.
되게 어렵게 벡터를 조정하고 있다가, 좋은 아이디어가 보여서 풀게 되었습니다.
string 의 경우 정렬하면 앞에서부터 같은 것끼리 인접하게 됩니다.
예를 들어, [123,12,13] 이 integer 일 경우 [12,13,123] 으로 정렬되지만,
string 인 경우 사전순으로 배열해서 [12,123,13] 식으로 정렬됩니다.
즉, 인접한 두 수만 비교하게 되면 접두사가 있는지 없는지 비교할 수 있게 됩니다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool solution(vector<string> phone_book) {
bool answer = true;
sort(phone_book.begin(), phone_book.end()); // 정렬
for(int i=0; i<phone_book.size() - 1; i++)
{
string str1 = phone_book[i];
string str2 = phone_book[i+1]; // 인접한 두 번호 비교
int len = str1.length();
str2 = str2.substr(0,len); // len 만큼 자름
if(str1 == str2)
{
answer = false;
return answer;
}
}
return answer;
}
'Algorithm > Programmers(c++)' 카테고리의 다른 글
[c++][프로그래머스] 다리를 지나는 트럭 (0) | 2021.08.30 |
---|---|
[c++][프로그래머스] 4주차 (0) | 2021.08.26 |
[c++][프로그래머스] 예상 대진표 (0) | 2021.08.24 |
[c++][프로그래머스] 최솟값 만들기 (0) | 2021.08.23 |
[c++][프로그래머스] jadenCase 문자열 만들기 (0) | 2021.08.23 |