*문제 출처는 프로그래머스에 있습니다.
문제 제목: 전화번호 목록 (2단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/42577
문제 설명
나의 풀이
#include <string>
#include <vector>
#include <map>
using namespace std;
bool solution(vector<string> phone_book) {
bool answer = true;
map<string, int> m;
for (string s : phone_book)
m[s]++;
for (int i = 0; i < phone_book.size(); i++) {
string number = "";
for (int j = 0; j < phone_book[i].size(); j++) {
number += phone_book[i][j];
if (m[number] && number != phone_book[i])
return false;
}
}
return answer;
}
※ 알아야 할 것
해시를 사용해서 푸는 문제들은 map를 사용해야한다.
if (m[number] && number != phone_book[i]) 이 코드를 자세히 살펴보자면
m[number] : 전화번호 목록에 있는 전화번호만 사용하기 위해서 있다.
number : 앞에 있는 번호를 하나씩 추가해서 전화번호 목록의 접두어랑 비교한다.
phone_book[i] : 기준으로 잡은 번호를 접두어로부터 빼는 작업을 한다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 행렬의 곱셈 / C++ (0) | 2024.03.06 |
---|---|
Programmers / 캐시 / C++ (0) | 2024.03.06 |
Programmers / 바탕화면 정리 / C++ (0) | 2024.03.05 |
Programmers / 기능개발 / C++ (0) | 2024.03.04 |
Programmers / 안전지대 / C++ (0) | 2024.02.28 |