폰켓몬
문제 설명
핵심 로직 생각해보기
⇒ 순서가 저장되지 않으며, 중복은 허용하지 않는 HashSet 을 사용하여 해결할 수 있다
구현해보기
import java.util.HashSet;
class Solution {
public int solution(int[] nums) {
HashSet<Integer> set = new HashSet<>();
// nums의 요소를 set에 담는다
for (int e : nums) {
set.add(e);
}
// set 크기와 N/2를 각각 변수로 초기화해준다
int setSize = set.size();
int halfLen = nums.length / 2;
// setSize 와 halfLen 중 작은 값을 반환한다
return setSize > halfLen ? halfLen : setSize;
}
}
Java
복사
전화번호 목록
문제 설명
핵심 로직 생각해보기
⇒ 중복이 없는 자료들을 효율적으로 탐색하는 HashMap을 사용하여 해결할 수 있다
구현해보기
import java.util.HashMap;
import java.util.Map;
class Solution {
public boolean solution(String[] phone_book) {
Map<String, String> map = new HashMap<>();
// phone_book 요소들을 map에 담는다 (value는 무관하다)
for(int i = 0; i < phone_book.length; i++) {
map.put(phone_book[i], "");
}
// 각 번호의 앞자리 숫자로 시작하는 번호가 있는지
// 0자리에서 length() - 1자리까지 문자열을 잘라서 map에서 찾는다
for(String s : phone_book) {
for(int i = 1; i < s.length(); i++) {
if(map.containsKey(s.substring(0, i))) {
return false;
}
}
}
return true;
}
}
Java
복사
참고 답안 (매개변수로 주어진 phone_book 배열 사용)
class Solution {
public boolean solution(String[] phone_book) {
for(int i = 0; i < phone_book.length - 1; i++) {
for(int j = i + 1; j < phone_book.length; j++) {
if(phone_book[i].startsWith(phone_book[j])) {return false;}
if(phone_book[j].startsWith(phone_book[i])) {return false;}
}
}
return true;
}
}
Java
복사