[프로그래머스] 전화번호 목록

떵호·2022년 1월 19일
0

알고리즘

목록 보기
4/8
post-thumbnail

문제 링크
https://programmers.co.kr/learn/courses/30/lessons/42577?language=java

📂 분류

문자열 정렬

💡 풀이

전화번호 배열을 정렬을 하면 매개변수가 string이기 때문에 크기순으로 정렬이 되지 않고 사전 순으로 정렬된다.
이를 이용해 현재 값이 다음 값의 접두어에 포함되는지 확인하면 되는 문제였다.

배열이 ["31", "13", "123", "3123145"]로 주어졌다고 가정하자.
주어진 배열을 정렬하면["123", "13", "31", "3123145"]와 같이 사전 순으로 정렬된다.

따라서 phone_book을 정렬하고 for 문을 이용해 phone_book[i]phone_book[i + 1]이 포함되는지 확인하면 된다.

💻 코드

  • cpp 코드
#include <bits/stdc++.h>

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++) {
        if (phone_book[i] == phone_book[i + 1].substr(0, phone_book[i].length()))
            return false;
    }
    return true;
}
  • java 코드
import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
        Arrays.sort(phone_book);
        for (int i = 0; i < phone_book.length - 1; i++) {
            if (phone_book[i + 1].startsWith(phone_book[i]))
                return false;
        }
        return true;
    }
}

자바로 갈아타기 위해 자바로 풀기 시작했다.

profile
꾸준히 해보자❗️

0개의 댓글