프로그래머스 문제 중, 동일한 접두어가 있는 경우 TRUE, 아닐 경우 FALSE 를 반환하는 문제를 풀었다.
https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내가 처음 시도 한 코드는 다음과 같다
해당 방법을 했을 때, phone_book 에 해당하는 배열을 Queue 에 저장해둔 리스트와 하나씩 다시 검사하는 방법을 취했다.
즉,
phone_book 배열의 다음 요소와 Queue 의 요소가 일치하지 않는다면, Queue에 다시 저장해서 처음부터 검사하는 것이다.
log 로 찍으면 다음과 같다.
queue : [123]
prevPHone : 123, phone : 456// false
queue : [123, 456]
prevPHone : 123, phone : 789// false
prevPHone : 456, phone : 789// false
answer : true //break;
이렇게 코드를 짰을 경우에는 아쉽게도 정답은 맞았지만 효율성에서 시간초과가 발생했다.
수정한 코드는 다음과 같다. 조금 더 단순하게 생각해서, phone_book 배열을 Arrays.sort 로 오름차순 정렬한 뒤에,
앞 뒤의 String 값을 비교하는 것이다.
이 경우에는 시간복잡도가 최대 O(n) 만 발생하여 효율성 검사도 무사히 통과 가능했다.
'TIL' 카테고리의 다른 글
[코테연습] smallest-number-in-infinite-set (0) | 2024.05.25 |
---|---|
[코테연습] 더맵게 (0) | 2024.05.24 |
[코테연습] 올바른 괄호 (0) | 2024.05.23 |
[코테연습] 기능개발 (0) | 2024.05.22 |
[코테연습] 의상 (0) | 2024.05.21 |