728x90
https://programmers.co.kr/learn/courses/30/lessons/42577
오늘의 코드 리뷰는 프로그래머스 전화번호 목록
전화번호목록중 어떤 번호가 다른 번호의 접두어인경우를 체크하는문제
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
for(int i = 0; i<phone_book.length; i++){
for(int j = 0; j<phone_book.length; j++){
if(!phone_book[i].equals(phone_book[j])){
if(phone_book[j].startsWith(phone_book[i])){
answer = false;
}
}
}
}
return answer;
}
}
일단 처음엔 단순하게 그 글자로 시작하는 문자열이있는지 이중포문으로 찾았는데
테스트케이스는 모두 통과했으나 효율성에서 On제곱이 나와버리니 통과를 못한듯하다
그래서 찾으면 바로 리턴하도록 변경했으나 역시... 효율성 두개 통과못햇...ㅋ
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+1].startsWith(phone_book[i]))
return false;
}
return answer;
}
}
다른 분의 코드를 참고하여 해결했는데.......
여기서 이해안되는 부분이
if문 비교에서 저렇게 코드를 짜면 0번방하고 1번방, 1번방하고 2번방, 이런식으로만 비교가 되는거아닌가...?
나는 i번방을 i+1번방부터 마지막방까지 써치하고싶은데...?
해결했지만 어떻게 풀린건지 이해하기힘든 코드다
'공부 > 코딩테스트' 카테고리의 다른 글
(1일 1코딩)프로그래머스 올바른 괄호[JAVA] (0) | 2021.08.04 |
---|---|
(1일 1코딩)프로그래머스 H-Index[JAVA] (0) | 2021.08.03 |
(1일 1코딩)프로그래머스 직사각형 별 찍기[JAVA] (0) | 2021.08.03 |
(1일 1코딩)프로그래머스 약수의 개수와 덧셈[JAVA] (0) | 2021.08.03 |
(1일 1코딩)프로그래머스 위클리 챌린지 부족한 금액 계산하기[JAVA] (0) | 2021.08.03 |