Algorithm/baekjoon 126

1,2,3 더하기 5

📍 문제 설명 💡 접근 N의 범위가 커서 브루트포스로는 시간초과 나는 문제 n이라는 숫자가 m으로 끝나는 방법의 수를 담을 2차원 배열을 사용해야한다. dp[1][1] = 1 (1) dp[2][2] = 1 (2) dp[3][1] = 1 (2+1) dp[3][2] = 1 (1+2) dp[3][3] = 1 (3) dp[4][1] = 2 (3+1, 1+2+1) dp[4][3] = 1 (1+3) dp[n][1]의 일 때 dp[n-1][1]은 연속된 숫자가 되므로 제외하고 dp[n-1][2],dp[n-1][3] 에서 구한 방법의 수를 더해준다. dp[n][2]의 일 때 dp[n-2][2]은 연속된 숫자가 되므로 제외하고 dp[n-2][1],dp[n-2][3] 에서 구한 방법의 수를 더해준다. dp[n][3]의 일..

Algorithm/baekjoon 2022.02.09

종이 조각

📍 문제 설명 💡 접근 스도쿠 문제와 접근 방식은 비슷하다. 1.현재 위치의 값을 가로 숫자로 사용할 것인지 세로 숫자로 사용할 것인지 visited 배열로 판단한다. 2.모든 열을 탐색했으면 다음 행의 0열부터 다시 탐색한다. 3.모든 행을 탐색했으면 visited 배열에 맞게 가로의 합 + 세로의 합을 구한다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, answer; static int[][] board; static boolean[][] visited; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static ArrayList list = new ArrayList()..

Algorithm/baekjoon 2022.02.08

부분수열의 합

📍 문제 설명 💡 접근 부분수열의 합으로 사용한다/사용하지않는다. 로 풀 수 있는 문제 단, 모두 사용하지 않는 경우에는 합이 0이므로 s가 0일땐 하나 빼줘야한다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, s, answer; static int[][] board; static char[] c; static int[] arr,pm; static boolean[] visited; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static ArrayList list = new ArrayList(); static StringBuilder sb = new StringBuilder..

Algorithm/baekjoon 2022.02.08

로또

📍 문제 설명 💡 접근 전형적인 조합문제다. k개 중에 6개 뽑는 것을 k = 0을 만날때까지 반복한다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, k, sum, answer = Integer.MAX_VALUE; static int[][] board; static char[] c; static int[] arr,pm; static boolean[] visited; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static ArrayList list = new ArrayList(); static StringBuilder sb = new StringBuilder(); publi..

Algorithm/baekjoon 2022.02.06

외판원 순회 2

📍 문제 설명 💡 접근 비용의 합을 구하는 DFS 문제, 마지막 합은 순회 지점의 합 1.1~N번 부터 출발할 수 있도록한다. 2.해당 출발지점에서 방문하지 않았고 갈 수 있는 N-1군데를 들르는 모든 경우의 수를 탐색한다. 3.N-1군데 모두 들렀으면 현재 지점에서 첫 지점으로 갈 수 있는지 확인 후 그 비용을 합한다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, sum, answer = Integer.MAX_VALUE; static int[][] board; static char[] c; static int[] arr,pm; static boolean[] visited; static int[] dx = {-1,1,0,0}; stat..

Algorithm/baekjoon 2022.02.06

맞춰봐

📍 문제 설명 💡 접근 1.주어진 문자열을 S[i][j]의 위치에 맞게 넣는다. 2.규현이가 아는 숫자 -10 ~ 10을 탐색한다. 3.현재 인덱스에 사용할 숫자를 기록한다. 4.현재까지의 인덱스까지의 합이 S[i][j]의 값과 맞는지 비교한다. 5.여기까지 통과하면 다음 인덱스 숫자를 구해본다. 6.N개의 숫자를 구했으면 답을 하나만 출력하기 위해 바로 종료시킨다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, sum, answer; static char[][] board,clone; static char[] c; static int[] arr; static boolean[] visited; static int[] dx = {-1,1,..

Algorithm/baekjoon 2022.02.06

부등호

📍 문제 설명 💡 접근 두번째 숫자부터 부등호 관계를 판단하여 재귀를 뻗어나가면 되는 문제 최댓값, 최솟값을 출력할 때 첫자리가 0인 경우도 출력해야하므로 리스트에 담아 정렬처리 👩‍💻 코드 import java.util.*; public class Main { static int n, m, sum, answer; static int[][] board,clone; static String[] s; static int[] arr; static boolean[] visited; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static StringBuilder sb = new StringBuilder(); static ArrayList list =..

Algorithm/baekjoon 2022.02.06

링크와 스타트

📍 문제 설명 💡 접근 스타트와 링크 문제와 거의 유사한 문제 스타트와 링크는 N/2명의 인원수로 구성된 2팀을 뽑아 내는 것이고 링크와 스타트는 인원수 관계 없이 1명 이상의 팀으로 2팀을 뽑아내는 것이다. 1명을 팀으로 했을 때, 2명을 팀으로 했을 때, 3명을 팀으로 했을 때를 감안해야 하므로 최종지점의 값을 1부터 n-1 까지 돌린다. 결국 N명 중에 1,2,3명 뽑는 조합의 문제이다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, sum, answer = Integer.MAX_VALUE; static int[][] board,clone; static boolean[] arr; static boolean[] visited; sta..

Algorithm/baekjoon 2022.02.06