본문 바로가기

알고리즘 & 자료구조569

덧칠하기 package programmers; public class 덧칠하기 { //구역 1...n개 //롤러의 길이 m 미터, //롤러는 구역의 일부분만 포함되게 칠하지 않음 //한 구역에 여러번 페인트를 칠해도 되지만, 칠할 곳은 반드시 칠해야댐 //페인트질 하는 횟수의 최소 횟수 public static int solution(int n, int m, int[] section) { int paint = section[0] - 1; int ans = 0; for (int i : section) { if (paint < i) { paint = i + m - 1; ans++; } } return ans; } public static void main(String[] args) { System.out.printl.. 2023. 3. 6.
행렬 테두리 회전하기 package programmers; import java.util.Arrays; public class 행렬_테두리_회전하기 { private static int[] answer; private static int idx; public static int[] solution(int rows, int columns, int[][] queries) { int[][] map = init(rows, columns); answer = new int[queries.length]; idx = 0; for (int i = 0; i < queries.length; i++) { map = getAfterRotateSmaller(map, queries[i]); } return answer; } //(x1,y1) ~ (x1.. 2023. 3. 3.
숫자 변환하기 package programmers; public class 숫자_변환하기 { public static final int MAX_VALUE = Integer.MAX_VALUE; //자연수 x -> y 변환 //가능한 연산 //1. x + n //2. x * 2 //3. x * 3 //최소 연산 횟수 반환 //x -> y 가 불가능할 시 -1 //1 2023. 3. 2.
수식 최대화 package programmers; import java.util.ArrayList; import java.util.List; public class 수식_최대화 { // 우선순위 경우의 수 6 // * + - // * - + // + * - // + - * // - * + // - + * public static long solution(String expression) { List num = new ArrayList(); List operator = new ArrayList(); init(expression, num, operator); long ans = 0; ans = max(new ArrayList(num), new ArrayList(operator), "*", "+", "-", ans); a.. 2023. 3. 1.
방금그곡 package programmers; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class 방금그곡 { //음악 제목, 재생이 시작되고 끝난 시각, 악보를 제공 // C, C#, D, D#, E, F, F#, G, G#, A, A#, B 음은 12개 // 각 음은 1분에 1개씩 재생 // 음악은 처음부터 재생되며 음악 길이보다 재생된 시간이 길 때는 반복재생 // 음악이 더 길면 재생시간 만큼만 재생 // 여러개 음악이 일치할경우 재생된 시간이 제일 긴 음악 제목 반환, 재생된 시간이 같으면 먼저 입력된 음악 제목 // 일치하는 음악이 없는 경우 (None) 반환 public stat.. 2023. 2. 28.
뒤에 있는 큰 수 찾기 package programmers; import java.util.Arrays; import java.util.Stack; public class 뒤에_있는_큰_수_찾기 { //배열의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 큰 수 //큰수가 존재하지 않으면 -1을 담음 public static int[] solution(int[] numbers) { int[] answer = new int[numbers.length]; Stack s = new Stack(); for (int i = 0; i < numbers.length; i++) { while (!s.isEmpty() && numbers[s.peek()] < numbers[i]) { answer[s... 2023. 2. 27.