Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Synchronization
- 플로이드 워셜
- 서버 호스팅
- Dijkstra Algorithm
- Proxy Server
- 동기화
- 플로이드 와샬
- 다익스트라
- 뮤텍스
- 최단 경로
- 세마포어와 뮤텍스
- 세마포어와 뮤텍스의 차이
- 프록시
- 호스팅
- 싸피
- 뮤텍스란?
- SSAFY
- 싸피 면접 후기
- Proxy
- 싸피 합격
- 세마포어란?
- 세마포어
- 클라우드 서버
- 삼성 청년 SW 아카데미
- floyd-warshall
- 호스팅이란?
- 프록시서버
- 다익스트라 알고리즘
- 웹 호스팅
Archives
- Today
- Total
어제의 나보다 성장한 오늘의 나
[프로그래머스][Level2][Java] 전화번호 목록 본문
programmers.co.kr/learn/courses/30/lessons/42577
문제풀이
매번 말하는 거지만 문제를 잘 읽어야한다! ㅠㅠ "접두사"의 정확한 사전적 의미를 알지 않고 포함되어 있으면
되겠지 생각하고 contains함수를 써서 풀었다.
하지만 접두사란? -> "어떤 단어의 앞에 붙어 새로운 단어가 되게 하는 말" 그러므로 contains함수로 풀면 안되고
앞에 붙는 숫자가 같은것끼리 찾으면 되는 문제였다.
그래서 배열의 길이에 따라 정렬하였고 접두사 검사를 하고 list에 담아주었다.
길이로 정렬하였기 때문에 비교 할려는 phone_book[i]의 길이가 담겨져 있는 list의 길이보다 크기 떄문에
subString으로 짤라줘 비교 하였다.
코드
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
List<String> list = new ArrayList<>();
Arrays.sort(phone_book, new phoneLengthCompare());
for(int i=0; i<phone_book.length; i++){
for(int j=0; j<list.size(); j++){
String a = list.get(j);
String b = phone_book[i].substring(0,a.length());
if(a.equals(b)) return false;
}
list.add(phone_book[i]);
}
return answer;
}
static class phoneLengthCompare implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return o1.length() > o2.length() ? 1 : o1.length() < o2.length() ? -1:0;
}
}
}
'알고리즘 > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스][Level2][Java] 위장 (0) | 2020.12.24 |
---|---|
[프로그래머스][Level2][Java] 카카오프렌즈 컬러링북 (0) | 2020.12.23 |
[프로그래머스][Level2][Java] 후보키 (0) | 2020.12.23 |
[프로그래머스][Level2][Java] 파일명정렬 (0) | 2020.12.22 |
[프로그래머스][Level2][Java] n진수 게임 (0) | 2020.12.21 |
Comments