‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀
문제 👉 <코딩테스트 연습 - 전화번호 목록 | 프로그래머스>
1. 문제
- 주어진 전화번호 중, 한 번호가 다른 번호의 접두어이면 false 아닐 경우 true를 리턴한다.
- 중복된 전화번호는 없다.
2. 풀이
해시
를 이용한 문제 풀이
- 모든 전화번호를 통해 key는 전화번호 value는 0을 가지는 Hash를 생성한다.
- for문을 통해 모든 전화번호가 전화번호 맨앞 2자리 숫자부터 마지막 자리 숫자까지 Hash에 있는지 탐색한다. 단, 탐색 전에 자기 자신의 번호를 구분하기 위해 Hash에서 자기 자신의 value는 1로 변경 후 탐색한다.
- 탐색이 끝난 후 다시 value는 0으로 변경한다.
3. 코드
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
HashMap<String,Integer> hm = new HashMap<>();
for(String num:phone_book) hm.put(num,0);
for(String num:phone_book){
hm.put(num,1); // 자기 자신은 1로 설정
for(int i=1; i<=num.length(); i++){
if(hm.containsKey(num.substring(0,i))){
if(hm.get(num.substring(0,i)) != 1) { // 자기 자신이 아닐 경우
return false;
}
}
}
hm.put(num,0); // 자기 자신 다시 0으로 설정
}
return true;
}
}
자바로 코딩테스트를 시작한지 얼마 안되어서 코드가 굉장히 저퀄리티다… 나중에 꼭 코드 수정하겠습니다…
References
🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스] 베스트앨범 [JAVA(자바)] (0) | 2021.11.25 |
---|---|
[프로그래머스] 위장 [JAVA(자바)] (0) | 2021.11.25 |
[프로그래머스] 완주하지 못한 선수 [JAVA(자바)] (0) | 2021.11.25 |
댓글