[Java] 코딩테스트 4월(with 프로그래머스)
2026/04/13(월)
알고리즘 고득점 kit > 해시 > 의상
https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
import java.util.HashMap;
class Solution {
public int solution(String[][] clothes) {
HashMap<String, Integer> map = new HashMap<>();
for(String[] cloth : clothes)
{
String type = cloth[1];
map.put(type, map.getOrDefault(type,0) + 1);
// 없으면 0에서 시작, 있으면 기존 값 +1
}
int answer = 1;
// map.keySet() - Map에 있는 모든 Key만 가져옴
// map.values() - Map에 있는 모든 값만 가져옴
for (int count : map.values())
{
answer *=(count + 1) ;
}
return answer - 1;
}
}
알고리즘 고득점 kit > 해시 > 완주하지 못한 선수
https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Map<String,Integer> map = new HashMap<>();
for(String name : participant)
{
map.put(name, map.getOrDefault(name,0)+1);
}
for(String name : completion)
{
map.put(name, map.get(name) - 1);
}
for(String key : map.keySet())
{
if(map.get(key)!= 0)
{
return key;
}
}
return answer;
}
}
2026/04/14(화)
알고리즘 고득점 kit > 해시 > 전화번호 목록
https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
import java.util.Arrays;
class Solution {
public boolean solution(String[] phone_book) {
Arrays.sort(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;
}
}
2026/04/15(수)
1. [문자열] 문자 빈도 정렬

import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
public static void main(String[] args) {
String input = "banana";
String answer = "" ;
String[] arr = input.split("");
Map<String, Integer> map = new HashMap<>();
for(int i=0;i<arr.length;i++)
{
map.put(arr[i], map.getOrDefault(arr[i],0) + 1);
}
StringBuilder sb = new StringBuilder();
Arrays.sort(arr);
String prev= "";
for(String s : arr)
{
if(!s.equals(prev))
{
sb.append(s);
sb.append(map.get(s));
prev = s;
}
}
System.out.println(sb);
}
}
2. [그리디] 체육복
https://school.programmers.co.kr/learn/courses/30/lessons/42862
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
int[] clothes = new int[n+1]; // 0번째 안 쓰고 1번 부터 쓰기 위해
for(int i= 1; i<= n ; i++)
{
clothes[i] = 1;
}
for(int l : lost)
{
clothes[l]--;
}
for(int r : reserve)
{
clothes[r]++;
}
for(int i =1; i<= n ;i ++)
{
if(clothes[i] == 0)
{
if(i-1 >= 1 && clothes[i-1] == 2)
{
clothes[i]++;
clothes[i-1]--;
}
else if(i+1 <= n && clothes[i+1] == 2)
{
clothes[i]++;
clothes[i+1]--;
}
}
}
for(int i = 1;i <= n ; i++){
if(clothes[i] >= 1) answer++;
}
return answer;
}
}
3. [해시] 최빈값 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/120812
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
import java.util.*;
class Solution {
public int solution(int[] array) {
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
for(int i=0;i<array.length;i++)
{
map.put(array[i], map.getOrDefault(array[i],0)+1);
}
int max = 0;
for(int i : map.keySet())
{
max = Math.max(max, map.get(i));
}
List<Integer> list = new ArrayList<>();
for(int i : map.keySet())
{
if(map.get(i) == max) list.add(i);
}
if(list.size() > 1)
{
return -1;
}
return list.get(0);
}
}