본문 바로가기

알고리즘 & 자료구조569

파일명 정렬 package programmers; import java.util.Arrays; public class 파일명정렬 { //파일명에 숫자가 포함된 숫자를 반영한 정렬 기능 구현 //파일명은 100글자 이내 //대소문자, 숫자, 공백, 마침표, 빼기 만으로 이루어져 있다. //파일명은 영문자로 시작하며, 숫자를 하나 이상 포함하고 있다. //파일명은 크게 Head, Number, Tail 로 구성 //Head는 숫자가 아닌 문자로 이루어져있으며, 최소한 한글자 이상 //Number은 한 글자에서 최대 5글자의 연속된 숫자로 이루어져있으며 앞쪽에 0이 올 수 있다. //Tail은 나머지 부분으로, 숫자가 다시 나타날 수 있으며, 아무글자가 없을 수도 있다. //1. 파일명은 Head 기준으로 사전 정렬 //.. 2023. 2. 12.
프렌즈 4 블록 package programmers; import java.util.ArrayList; import java.util.List; public class 프렌즈4블록 { //같은 블록은 여러 2x2에 포함 가능 //지워지는 조건에 만족하는 2x2 모양이 여러 개 있다면 한번에 지워짐 //지워진 후에 위에 있는 블록이 아래로 떨어져 빈 공간을 채움 public static int solution(int m, int n, String[] board) { char[][] map = init(m, n, board); while (true) { boolean[][] check = new boolean[m][n]; findRemovableBlock(m, n, map, check); List[] list = new A.. 2023. 2. 11.
방문 길이 package programmers; import java.util.HashSet; import java.util.Objects; import java.util.Set; public class 방문길이 { private static char[] dir = new char[] {'U', 'D', 'R', 'L'}; private static int[] dy = new int[] {-1, 1, 0, 0}; private static int[] dx = new int[] {0, 0, 1, -1}; private static Set set; public static int solution(String dirs) { set = new HashSet(); Point lastPoint = init(dirs.charA.. 2023. 2. 10.
할인 행사 package programmers; import java.util.HashMap; import java.util.Map; public class 할인행사 { //일정 금액을 지불하면 10일 동안 회원 자격 부여 //회원을 대상으로 매일 한 가지 제품을 할인 //할인 제품은 하루에 하나씩 구매 가능 //원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입 private static int ans; public static int solution(String[] want, int[] number, String[] discount) { Map wantMap = new HashMap(); ans = 0; for (int i = 0; i < number.length; i++) { .. 2023. 2. 6.
땅따먹기 package programmers; public class 땅따먹기 { //D[i][j] = (i,j) 까지 도달했을 때의 최댓값 //D[i][j] = max(D[i-1][0], ... D[i-1][k]) + land[i][j] // j == k -> continue public static int solution(int[][] land) { int[][] d = new int[land.length][land[0].length]; for (int i = 0; i < land[0].length; i++) { d[0][i] = land[0][i]; } for (int i = 1; i < land.length; i++) { for (int j = 0; j < land[i].length; j++) { for .. 2023. 2. 4.
스킬트리 package programmers; public class 스킬트리 { public static int solution(String skill, String[] skill_trees) { int answer = 0; if (skill.length() == 1) { return skill_trees.length; } for (int i = 0; i < skill_trees.length; i++) { String tmp = skill_trees[i].replaceAll("[^" + skill + " ]", ""); if (tmp.equals("")) { //선행 스킬 조건에 속해있지 않다면 문자열은 ""만 남아있다. answer++; continue; } for (int j = 1; j 2023. 2. 3.