해시
전화번호 목록
Arrays.sort() & String class의 startsWith()
접근 방법
소스코드
import java.util.Arrays;
public class Solution{ // 전화번호 목록
public static void main(String[] args) {
// String[] phone_book = {"119", "97674223", "1195524421"};
// String[] phone_book = {"97674223", "119", "1195524421"};
// String[] phone_book = {"123","456","789"};
// String[] phone_book = {"12","123","1235","567","88"};
String[] phone_book = {"819232312", "976", "119552", "2"};
System.out.println(solution(phone_book));
}
private static boolean solution(String[] phone_book) {
Arrays.sort(phone_book);
// 확인
System.out.println(Arrays.toString(phone_book));
for (int i = 0; i < phone_book.length-1; i++) {
if(phone_book[i+1].startsWith(phone_book[i])) {
return false;
}
}
return true;
}
}
Java
복사
HashSet
접근 방법
소스코드
import java.util.HashSet;
public class Solution { // 전화번호 목록
public static void main(String[] args) {
// String[] phone_book = {"119", "97674223", "1195524421"};
// String[] phone_book = {"97674223", "119", "1195524421"};
// String[] phone_book = {"123","456","789"};
// String[] phone_book = {"12","123","1235","567","88"};
String[] phone_book = {"819232312", "976", "119552", "2"};
System.out.println(solution(phone_book));
}
private static boolean solution(String[] phone_book) {
HashSet<String> hash = new HashSet<>();
for (int i = 0; i < phone_book.length; i++) {
hash.add(phone_book[i]);
}
for (String num : phone_book) {
for (int j = 1; j < num.length(); j++) {
if(hash.contains(num.substring(0, j))) {
return false;
}
}
}
return true;
}
}
Java
복사
위장
HashMap
접근 방법
return
import java.util.HashMap;
public class Solution{ // 위장
public static void main(String[] args) {
String[][] clothes = { { "yellowhat", "headgear" }, { "bluesunglasses", "eyewear" },
{ "green_turban", "headgear" } };
System.out.println(solution(clothes));
}
private static int solution(String[][] clothes) {
// int answer = 0;
// 2가지 이상의 조합
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < clothes.length; i++) {
String t = clothes[i][1];
map.put(t, map.getOrDefault(t, 1) + 1); // 착용을 안했을때까지 합쳐서 1부터 시작
}
// 확인
for (String key : map.keySet()) {
System.out.println(String.format("타입 : %s, 값: %d", key, map.get(key)));
}
int answer = 1;
// 조합의 수 구하기
for (int cnt : map.values()) {
answer *= cnt;
}
answer -= 1; // 모두 착용x
return answer;
}
}
Java
복사
베스트앨범
HashMap
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
public class Solution { // 베스트 앨범
public static void main(String[] args) {
String[] genres = {"classic", "pop", "classic", "classic", "pop"};
int[] plays = {500, 600, 150, 800, 2500};
System.out.println(solution(genres, plays));
}
private static int[] solution(String[] genres, int[] plays) {
// 1. 속한 노래가 가장 많은 장르
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < genres.length; i++) {
String genre = genres[i];
map.put(genre, map.getOrDefault(genre, 0) + plays[i]);
}
// 확인
System.out.println("====================1=====================");
for (String key : map.keySet()) {
System.out.println(String.format("장르명 : %s, 재생횟수: %d", key, map.get(key)));
}System.out.println();
List<String> listKeySet = new ArrayList<>(map.keySet());
// 내림차순 정렬
Collections.sort(listKeySet, (value1, value2) -> (map.get(value2).compareTo(map.get(value1))));
// 확인
System.out.println("====================2=====================");
for(String key : listKeySet) {
System.out.println("key : " + key + " , " + "value : " + map.get(key));
}System.out.println();
// 2. 재생 횟수가 가장 많은 노래
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < listKeySet.size(); i++) {
String genre = listKeySet.get(i);
// 첫번째
int max = 0;
int first = -1;
for (int j = 0; j < genres.length; j++) {
if(genre.equals(genres[j]) && max < plays[j] && j != first) {
max = plays[j];
first = j;
}
}
// 두번째
max = 0;
int second = -1;
for (int j = 0; j < genres.length; j++) {
if(genre.equals(genres[j]) && max < plays[j] && j != first) {
max = plays[j];
second = j;
}
}
list.add(first);
// 한 장르에 한곡만 있을 경우에는 두번째 곡 추가 x
if(second != -1) {
list.add(second);
}
}
int[] result = new int[list.size()];
for (int j = 0; j < list.size(); j++) {
result[j] = list.get(j);
}
System.out.println(Arrays.toString(result));
return result;
}
}
Java
복사