-
[프로그래머스] Level.2 - 전화번호 목록 (JAVA)개발공부/코딩테스트 연습문제 2022. 1. 21. 10:46
문제 설명과 제한사항

풀이
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++){ String num1 = phone_book[i]; String num2 = phone_book[i+1]; if(num1.length() < num2.length() && num1.equals(num2.substring(0,num1.length()))){ return false; } } return answer; } }++
발상은 쉽게 됐다.
1. String[] (문자열) 배열 이기 때문에 정렬하면 사전순으로 정렬 됨.
2. 정렬 후 다음 문자열과 비교하면 됨.
그렇게 코드를 짜다보니 다음 문자열이 이전 문자열보다 짧으면 에러가 뜨게 됨.
그래서 조건을 추가하다보니 조건이 너무 길어서 num1, num2 를 선언함.
다른 사람의 풀이를 보니 같은 방식으로 contains 로 푼 사람들이 있었는데..
contains는 접두사만 체크하는게 아니기 때문에 문제가 발생할 수 있었다.
또 다른 사람의 풀이는 startsWith로 푼 사람이 있었다..
좋은 발상인 것 같다. startsWith로 풀면 다음과 같다.
import java.util.*; class Solution { public boolean solution(String[] phone_book) { Arrays.sort(phone_book); for(int i = 0; i < phone_book.length - 1 ; i++){ if(phone_book[i+1].startsWith(phone_book[i])){ return false; } } return true; } }깔-끔.
'개발공부 > 코딩테스트 연습문제' 카테고리의 다른 글
[프로그래머스] Level.2 - 프린터 (JAVA) (0) 2022.01.26 [프로그래머스] Level.2 - 문자열 압축(JAVA) (0) 2022.01.21 [프로그래머스] Level.2 - (1차)뉴스 클러스터링 (JAVA) (0) 2022.01.19 [프로그래머스] Level.2 - 짝지어 제거하기 (0) 2022.01.19 [프로그래머스] Level.2 - 더 맵게 (0) 2022.01.18