문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42577

제한 사항

입출력 예

풀이
import java.util.HashMap;
import java.util.Arrays;
import java.util.HashSet;
class Solution {
public boolean solution(String[] phone_book) {
HashMap<String, Integer> result = new HashMap<>();
HashSet<Integer> numLenSet = new HashSet<>();
Arrays.sort(phone_book, (num1, num2) -> num1.length() - num2.length());
for (int i = 0; i < phone_book.length; i++) {
result.put(phone_book[i], 1);
for (Integer num : numLenSet)
if (num != phone_book[i].length())
if (result.containsKey(phone_book[i].substring(0, num))) return false;
numLenSet.add(phone_book[i].length());
}
return true;
}
}
import java.util.Arrays;
class Solution {
public boolean solution(String[] phone_book) {
Arrays.sort(phone_book);
String prev = "-";
for (String s : phone_book) {
if (s.startsWith(prev)) return false;
else prev = s;
}
return true;
}
}
ㄴ 2024. 12. 27. 2차 풀이
후기
약간 헤맸다... 한 가지 간과한 점이 있어서 몇 번 틀렸는데 주의할 점은 길이가 제일 작은 문자열의 길이만 고려해서는 안 된다는 것이다. 만약 길이가 3이 제일 작다고 할 때 길이가 4인 문자열로 시작하는 길이 5 이상인 문자열도 있을 수 있다는 것이다. 그래서 Set을 이용해서 자릿수를 순회하며 조건을 체크할 수 있도록 했다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][JAVA][Lv. 2] 압축 (0) | 2023.09.22 |
|---|---|
| [프로그래머스][JAVA][Lv. 2] k진수에서 소수 개수 구하기 (0) | 2023.09.20 |
| [프로그래머스][JAVA][Lv. 2] 타겟 넘버 (0) | 2023.09.18 |
| [프로그래머스][JAVA][Lv. 0] OX퀴즈 (0) | 2023.09.18 |
| [프로그래머스][JAVA][Lv. 2] 피로도 (0) | 2023.09.17 |