본문 바로가기

알고리즘 & 자료구조569

두 큐 합 같게 만들기 package programmers; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.stream.Collectors; public class 두_큐_합_같게_만들기 { //길이가 같은 큐 두 개 //하나의 큐를 골라 원소를 pop, 다른 큐에 push = 1회 //두 큐의 원소 합이 같도록 만듦 //가능한 경우의 수 //1. q1 == q2 //2. q1 -> q2(sum/2 q1(sum/2 > q2) public static int solution(int[] queue1, int[] queue2) { // 두 큐의 합을 구하기 long queue1Su.. 2023. 2. 26.
괄호 변환 package programmers; import java.util.Stack; public class 괄호_변환 { public static String solution(String p) { return go(p); } private static String go(String p) { //1. 입력이 빈 문자열인 경우, 빈 문자열 반환 if (p.equals("")) { return ""; } StringBuilder sb = new StringBuilder(); String[] tmp = splitString(p); String u = tmp[0]; String v = tmp[1]; //3. 문자열 u가 올바른 괄호 문자열이라면 문자열 v에 대해 1단계부터 다시 수행 if (isBracket(u)) .. 2023. 2. 24.
롤케이크 자르기 package programmers; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; public class 롤케이크_자르기 { // 각 조각에 동일한 가짓수의 토핑이 올라가게 자르기 public static int solution(int[] topping) { int answer = 0; Set set = new HashSet(); Map map = new HashMap(); for (int i = 0; i < topping.length; i++) { map.put(topping[i], map.getOrDefault(topping[i], 0) + 1); } for (int i = .. 2023. 2. 23.
메뉴 리뉴얼 package programmers; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class 메뉴_리뉴얼 { //코스 요리 제공 //2가지 이상의 단품 메뉴로 구성 //최소 2명 이상의 손님으로부터 주문된 단품 메뉴 조합에 대해서만 코스 요리 후보 포함 private static Map map; private static Set set; private static int cours.. 2023. 2. 22.
삼각 달팽이 package programmers; import java.util.Arrays; public class 삼각_달팽이 { public static int[] solution(int n) { if (n == 1) return new int[] {1}; int[][] map = new int[n][n]; int sum = getSum(n); int count = 1; int y = 0; int x = 0; int limit = 0; while (limit + 1 2023. 2. 21.
큰 수 만들기 package programmers; import java.util.Stack; public class 큰_수_만들기 { public static String solution(String number, int k) { Stack s = new Stack(); for (int i = 0; i 0) { s.pop(); k--; } s.push(c); } while (k > 0) { s.pop(); k--; } return s.toString().substring(1, s.toString().length() - 1).replace(.. 2023. 2. 20.