본문 바로가기
Java

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

by hunbal 2023. 10. 23.
SMALL

문제 설명 및 예시

주어진 배열의 원소가 다른 원소의 접두어인 경우를 판단하는 함수를 구현하는 문제이다.

 


풀이

접두어를 판단하는 startWith() 메서드HashMap을 사용하는 두 가지 풀이법으로 문제를 해결했다. 

우선 startWith() 메서드를 사용한 풀이이다.

1. 효율적인 비교를 위해 배열을 길이 순으로 정렬한다.

2. 반복문으로 현재 전화번호와 그 다음 전화번호를 비교한다. (마지막 전화번호는 비교할 필요 없음)

3. *startWith() 메서드로 접두어가 존재하면 false, 그렇지 않으면 true를 반환한다.

 

startWith()와 contains() 메서드는 유사한 것처럼 보이지만 중요한 차이점이 존재한다.

A.startWith(B)
: A의 접두어가 B인지 판단하는 함수.
A.contains(B) : A 안에 B가 포함되는지 판단하는 함수.

문제에서 접두어 여부를 요구했으므로 contatins() 메서드를 사용할 시 오답이 될 수 있다.

 

 

테스트를 통과했고, HashMap을 활용하여 다른 방식으로 풀어보기로 하였다.

 

1. 배열을 길이 순으로 정렬한다.

2. 접두어를 저장할 HashMap을 생성한다.

3. for문으로 전화번호 배열의 각 원소를 문자로 나눠 접두어로 HashMap에 저장한다.

4. 현재 전화번호가 HashMap에 저장된 접두어일 시 false를 반환한다.

5. 중복된 접두어가 없을 시 true를 반환한다.

 

 

무난하게 풀이를 완료하였다.

유사하지만 접두어 여부에 따라 다른 결과를 반환하는 startWith() 메서드와 contains() 메서드, HashMap에 대한 이해가 필요한 문제였다.

 

 

댓글