-
[프로그래머스/Level 2] 전화번호 목록 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 10. 15:48
programmers.co.kr/learn/courses/30/lessons/42577
풀이
문자열 벡터 phone_book에 존재하는 전화번호들의 각각의 번호를 key로 하여 그 개수를 value로 더해나갑니다. key, value형태의 데이터를 저장하기 위해서 unordered_map 자료구조를 이용하였습니다.
- 구조대 : 119
- 박준영 : 97 674 223
- 지영석 : 11 9552 4421
이와 같은 데이터 입력에서, phone_book의 첫번째 번호인 구조대의 번호를 다음과 같이 저장합니다.
prefix["1"]++;
prefix["11"]++;
prefix["119"]++;
다음으로 두번째 번호를 불러와서 다음과 같이 저장합니다.
prefix["9"]++;
prefix["97"]++;
....
prefix["97674223"]++
이런 식으로 모든 번호의 각 요소를 위와 같이 처리 해준 후, 번호들을 key값으로 하는 value 중 값이 2 이상인 경우가 존재하면 false를 리턴해주고, 아니면 true를 리턴하면 됩니다.
전체 코드
#include <string> #include <vector> #include <unordered_map> using namespace std; bool solution(vector<string> phone_book) { unordered_map<string,int> prefix; for(string s : phone_book) { string res=""; for(int i=0;i<s.size();i++) { res+=s[i]; prefix[res]++; } } for(string s : phone_book) { if(prefix[s]>1) return false; } return true; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 1] 크레인 인형 뽑기 (C++) (0) 2020.10.24 [프로그래머스/Level 2] 주식가격 (C++) (0) 2020.10.12 [프로그래머스/Level 3] 베스트앨범 (C++) (0) 2020.10.10 [프로그래머스/Level2] 위장 (C++) (0) 2020.10.10 [프로그래머스/Level 1] 완주하지 못한 선수 (C++) (0) 2020.10.09