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
- github
- jdbc
- vagrant
- WebHook
- EC2
- Git
- Java
- DISTINCT
- 책 정리
- spring
- Client
- AWS
- db
- 프로그래머스
- sample
- window
- SSL
- 토비의스프링
- docker
- mariadb
- 코딩테스트
- Jenkins
- spring boot
- Linux
- centos7
- TypeScript
- Hibernate
- Spring Legacy Project
- ssh
- TLS
Archives
- Today
- Total
Woopii Vyeolog
[프로그래머스 코딩테스트 연습] 해시 2 본문
문제 링크 : https://programmers.co.kr/learn/courses/30/parts/12077
2번 문제 : 전화번호 목록
문제 설명
내가 한 풀이
(subStirng()으로 잘라도 되지만 startWith()를 처음봐서 한번 써보았다.)
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
//접두사를 보는것이라서 정렬을 해 놓으면 이중 for문을 쓸 필요가 없다.
Arrays.sort(phone_book);
//정렬을 해서 아래방향으로만 접두어가 있는지 검토한다. 위 방향으로는 접두어가 있을 수 없다.
//자기 자신은 제외한다.
for(int i = 0; i < phone_book.length-1;i++) {
if(phone_book[i+1].startsWith(phone_book[i])) {
answer = false;
break;
}
}
return answer;
}
}
Hash를 사용한 풀이(이게 더 효과적인지는 모르겠음......)
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
HashMap<String, Integer> map = new HashMap<String, Integer>();
//hash객체안에 Array안에 있는 데이터를 모두 쪼개어서 넣는다.
//각 데이터마다 쪼개진 데이터를 넣고 자기 자신의 데이터는 안넣는다.
//예 : '119' --> '1', '11' 이 들어간다. (포함관계에 넣지 않기 위함)
for(int i = 0; i < phone_book.length; i++) {
for(int j = 0; j < phone_book[i].length()-1; j++) {
map.put(phone_book[i].substring(0, j+1), 0);
}
}
//containsKey()메소드로 해당 String 값이 map에 있나 체크함
for(int i = 0; i < phone_book.length; i++) {
if(map.containsKey(phone_book[i])) {
answer = false;
break;
}
}
return answer;
}
}
'코딩테스트 연습' 카테고리의 다른 글
[프로그래머스] 수박수박수박수박수박수? (0) | 2022.04.11 |
---|---|
[프로그래머스] 폰켓몬 (0) | 2022.04.11 |
[프로그래머스 코딩테스트 연습] 해시 3 (0) | 2020.04.25 |
[프로그래머스 코딩테스트 연습] 해시 1 (0) | 2020.04.20 |
코딩테스트 시작하기 (0) | 2020.04.20 |
Comments