문제: https://school.programmers.co.kr/learn/courses/30/lessons/42577
1. 코드
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
Arrays.sort(phone_book);
for(int i = 0; i < phone_book.length - 1; i++) {
if(phone_book[i].startsWith(phone_book[i + 1]) || phone_book[i + 1].startsWith(phone_book[i])) {
answer = false;
break;
}
}
return answer;
}
}
2. 설명
문자열 배열을 정렬하게 되면 길이가 아닌 문자열의 왼쪽 부분부터 비교를 진행하며 해당 문제에서는 문자 중 숫자만 입력이 진행되기에 숫자의 순서로 오름차순으로 정렬하게 됩니다. 예를 들어 [ "119", "97674223", "1195524421"] 배열이 존재하며 정렬하게 되면 [ "119", "1195524421", "97674223"]이렇게 정렬되기에 반복문을 통해 쉽게 시작하는 문자열인지 확인 가능하다.
해시를 사용한 문제라고 명시되어 있는데 정확히 어떻게 확인하는지 모르겠다.
3. 정리
- 문자열 정렬의 성질을 이용할 수 있다.
- String.startsWith() 메서드는 Parameter로 해당 문자열이 시작되면 true 아니면 false를 반환
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges
'컴퓨터 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 43162번: 네트워크 [Java] (0) | 2023.10.24 |
---|---|
프로그래머스 - 92335번: k진수에서 소수 개수 구하기 [Java] (0) | 2023.10.23 |
프로그래머스 - 43105번: 정수 삼각형 [Java] (0) | 2023.10.21 |
프로그래머스 - 42628번: 이중우선순위 [Java] (0) | 2023.10.20 |
프로그래머스 - 43165번: 타겟 넘버 [Java] (0) | 2023.10.19 |