728x90
https://programmers.co.kr/learn/courses/30/lessons/42577#qna
코딩테스트 연습 - 전화번호 목록
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조
programmers.co.kr
해시 문제 목록 중에 있던 문제.
해시로 풀어야한다고 해서 어렵게 생각하고 있었는데, 그냥 해시맵에 모든 번호를 넣고 한 번호를 0번인덱스 부터 끝 - 1 번째까지 잘라보면서 해당하는 문자열이 맵의 키로 있는지 확인하면 되는 문제다.
참고로 substring 함수는 시작 인덱스부터 끝 인덱스 - 1 까지 세주기 때문에 j는 1부터 시작했다. substring(0,0)은 늘 ""(빈 문자열) 이기 때문에.
import java.util.HashMap;
public class 전화번호_목록 {
public boolean solution(String[] phone_book) {
boolean answer = true;
HashMap<String, Integer> map = new HashMap<>();
for(int i = 0; i < phone_book.length; i ++) {
map.put(phone_book[i], i);
}
for(int i = 0; i < phone_book.length; i ++) {
for(int j = 1; j < phone_book[i].length(); j ++) {
if(map.containsKey(phone_book[i].substring(0, j))) answer = false;
}
}
return answer;
}
}728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 더 맵게 자바 풀이 (0) | 2022.06.09 |
|---|---|
| 프로그래머스 큰 수 만들기 자바 풀이 (0) | 2022.06.08 |
| 프로그래머스 프린터 자바 풀이 (0) | 2022.06.05 |
| 프로그래머스 표 편집 자바 풀이 (0) | 2022.04.19 |
| 프로그래머스 크레인 인형뽑기 자바 풀이 (0) | 2022.04.14 |