Algorithm 306

DSLR

📍 문제 설명 💡 접근 연산의 최소 횟수를 구하면 되는 문제로 BFS를 이용하면 되는 문제였다. 다른 연산으로 덮어씌워지지 않게 해당 숫자 방문처리 하는 배열 사용했다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, k; static int[][] board,dis; static int[] ch,pm, combi, first, last; static boolean[] visited; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scann..

Algorithm/baekjoon 2022.01.19

스타트와 링크

📍 문제 설명 💡 접근 n명중에 2팀을 뽑아야하는데 여기서의 뽑히는 것의 구분은 boolean 값에 따라서 구별해준다. n명의 상태 정보 값이 모두 필요하다.(뽑히는 경우와 뽑히지 않는 경우) 👩‍💻 코드 import java.util.*; public class Main { static int n, m, k; static int[][] board,dis; static int[] ch,pm; static boolean[] combi; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static int min = Integer.MAX_VALUE; public static void main(String[] args) { Main T = new Mai..

Algorithm/baekjoon 2022.01.18

스도쿠

📍 문제 설명 💡 접근 0,0에서부터 모든 열을 확인후 모든 행을 탐색하는 방식으로 풀면 됐다. 근데 해당 지점에 잘못된 숫자가 들어갔을 때의 처리가 문제였다. 문제에서 제일 중요한 부분이 3군데 있었다. 1.이전 row가 잘못 채워졌을 경우에 되돌아가기 위한 return; 2.스도쿠가 채워졌을 경우 바로 출력시키고 종료하는 System.exit(0); return;을 사용하면 안되는 이유는 마지막 탐색을 한다고 가정했을 때 스도쿠가 채워진다는 보장이 없기 때문임 3.들어갈 순 있지만 올바른 숫자가 아닐 때 다시 빈칸으로 만들고 + 되돌아가기 위한 return; return이 없다면, 해당 자리를 채웠는데 실패한 경우 다시 돌아오고나서 또 다시 다음 열을 탐색하게됨 위 사진의 스도쿠를 본다면 0,0 올바..

Algorithm/baekjoon 2022.01.18

알파벳

📍 문제 설명 💡 접근 알파벳 방문배열을 만들어서 방문한 알파벳을 만날 때 마다 현재 거리를 리턴해주면 된다. 그리고 방문체크 해제해줘야 다른 루트도 정상적으로 확인할 수 있다! 👩‍💻 코드 import java.util.*; public class Main { static int n, m, k, dis, max; static int[][] board; static int[] ch,combi,pm; static String[] split; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; //알파벳 방문여부 static boolean[] checked = new boolean[26]; public static void main(String[] ar..

Algorithm/baekjoon 2022.01.17

암호 만들기

📍 문제 설명 💡 접근 시간초과 판정이 나서 이것저것 해봤는데, 최종 문제는 순열로 풀었다는 것이다. 오름차순 정렬을 순열을 뽑고나서 진행하는게 아니라 정렬 먼저 한 다음 조합으로 뽑아내면된다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, k; static int[][] board,dis; static int[] ch; static String[] split,pm; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static int[] combi; static ArrayList list = new ArrayList(); public static void main(String[]..

Algorithm/baekjoon 2022.01.17

영역 구하기========

📍 문제 설명 💡 접근 영역에 맞게 직사각형을 그리고나서 분리된 영역의 갯수와 넓이를 구하면 되는 문제였다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, k, answer, area; static int[][] board,dis,ch; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static int[] combi; public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); m = kb.nextInt(); n = kb.nextInt(); k = kb.nextI..

Algorithm/baekjoon 2022.01.17

36.편집 거리

📍 문제 설명 두 개의 문자열 A와 B가 주어졌을 때, 문자열 A를 편집하여 문자열 B로 만들고자 합니다. 문자열 A를 편집할 때는 다음의 세 연산 중에서 한 번에 하나씩 선택하여 이용할 수 있습니다. 삽입(Insert): 특정한 위치에 하나의 문자를 삽입합니다. 삭제(Remove): 특정한 위치에 있는 하나의 문자를 삭제합니다. 교체(Replace): 특정한 위치에 있는 하나의 문자를 다른 문자로 교체합니다. 이때 편집 거리란 문자열 A를 편집하여 문자열 B로 만들기 위해 사용한 연산의 수를 의미합니다. 문자열 A를 문자열 B로 만드는 최소 편집 거리를 계산하는 프로그램을 작성하세요. 예를 들어 "sunday"와 "saturday"의 최소 편집 거리는 3입니다. 입력 두 문자열 A와 B가 한줄에 하나씩..

Algorithm/이코테 2022.01.12

35.못생긴 수

📍 문제 설명 못생긴 수란 오직 2, 3, 5 만을 소인수로 가지는 수를 의미한다. 다시 말해 오직 2, 3, 5를 약수로 가지는 합성수를 의미한다. 1은 못생긴 수라고 가정한다. 따라서 못생긴 수들은 {1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ... } 순으로 이어지게 된다. 이 때, n번째 못생긴 수를 찾는 프로그램을 작성해라. 예를 들어 11번째 못생긴 수는 10이다. 입력조건 첫째 줄에 n이 입력된다.(1

Algorithm/이코테 2022.01.12

34.병사 배치하기

📍 문제 설명 💡 접근 바로 뒤쪽이 아닌 모든 뒤쪽 병사들의 전투력보다 커야한다. 뒤집어서 LIS 알고리즘을 적용해서 최장 증가 부분 수열의 길이를 구하고 병사의 수 - 길이를 해주면 남아있는 병사의 최대 수가 나온다. 👩‍💻 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n = kb.nextInt(); ArrayList v = new ArrayList(); int[] dp = new int[n]; for(int i = 1; i

Algorithm/이코테 2022.01.12

33.퇴사

📍 문제 설명 💡 접근 i번째 날부터 마지막 날까지 낼 수 있는 최대 이익을 담는 dp 테이블을 선언한다. 상담하는데 걸리는 시간이 기간안에 끝나는지에 따라 처리를 해준다. 기간안에 끝나면 현재의 이익을 과 현재 상담이 끝난 이후 날짜의 이익들을 더한값과 현재까지의 저장되어 있는 최대 이익을 비교하여 큰 값으로 갱신한다. 기간안에 끝나지 않으면 저장되어 있는 최대 이익을 dp 테이블에 담는다. 예를 들어 2일 째의 상담을 하게 되면 6일부터 상담진행이 가능(20+0)하기때문에 현재까지의 최대 이익인 3,4,5일(10+20+15) 상담으로 값을 갱신한다. 👩‍💻 코드 import java.util.*; public class Main { static int maxValue; public static voi..

Algorithm/이코테 2022.01.11