Java/Algorithms

문제 접근 방식 N과 M 시리즈 2번 문제와 같은 문제로 추가로 주어진 배열 입력에 대해 정렬하여 오름차순으로 수열을 만들어 출력하는 문제다. 이전에 등장한 수열이라면 순서 상관없이 중복으로 취급하여 다시 출력하는 경우가 없어야 한다. 예를 들어 1 7 8을 출력했으면 8 7 1 같은걸 출력할 필요가 없다. 즉, 주어진 배열을 순회하며 수열을 만들 때, 다음 자리 수를 뽑는 재귀 호출 시 시작 인덱스를 1씩 증가시켜주면 된다. 풀이 public class Main { private static StringBuilder sb = new StringBuilder(); private static int n; private static int m; private static int[] arr; private s..
문제 접근 방식 N과 M (1) 문제와 같은 문제에 조건만 조금 달라져서 풀기가 쉬웠다. 1 ~ 4번 시리즈와는 다르게 정수 배열에 대한 입력이 추가되는데 이를 정렬된 순서로 자기 자신은 제외한 순열을 만들어주면 된다. 코드는 N과 M (1) 문제와 같고 정렬만 추가된다고 이해하면 된다. 풀이 public class Main { private static StringBuilder sb = new StringBuilder(); private static int n; private static int m; private static int[] arr; private static int[] permutation; private static boolean[] isUsed; public static void ma..
문제 접근 방식 1 1 1 1 1 2 1 1 3 1 2 2 1 2 3 1 3 3 2 2 2 2 2 3 2 3 3 3 3 3 우선 1부터 N까지의 숫자를 중복이 가능하게 3개를 뽑아서 수열을 만들 수 있을 때 위와 같은 규칙대로 수열을 만들어야 한다. 111, 112, 113 >> 122, 123 위의 숫자를 보면 규칙을 하나 찾을 수 있는데 다음에 올 수 있는 숫자의 범위는 항상 이전의 숫자보다 같거나 커야 한다. 별 찍기도 그렇고 N과 M시리즈도 그렇고 혼자 규칙 찾아서 풀어야 하는거만 빼면 재귀 연습하기는 참 좋긴하다... 어쨋든 이 규칙대로 수열을 만들기 위해서는 재귀 호출을 할 때 다음에 올 숫자의 시작 범위를 파라미터로 넘겨줘야 한다는 것이다. 이 부분만 생각하면서 풀면 어렵지 않게 풀 수 있는..
문제 n과 m이 주어졌을 때 (1
문제 숫자 n이 주어졌을 때, 정해진 규칙에 맞게 별을 출력하라 접근 방식 별 찍기 10을 풀면 11을 쉽게 풀 수 있다길래 바로 도전했는데 어김없이 두들겨 맞았다... 별 찍기 문제들이 다 숫자 하나만 주고 알아서 규칙을 찾아서 규칙대로 출력하라니 정말 골 때리는 문제인 거 같다 (재귀 자체도 어려워 죽겠는데 팍C...) 그래도 이 문제까지 풀고 나니 재귀는 그냥 컴퓨터한테 믿고 맡기라는 말이 무슨 말인지 이해가 되는 거 같다 * * * ***** 우선 n이 3인 경우를 살펴보면 알 수 있는 것들이 몇 가지 있다. 별은 총 3개의 층으로 규칙 없이 1, 2, 5개가 찍힌다. 가장 아래층은 2n - 1의 길이를 가진다. * * * ***** * * * * * * ***** ***** 다음으로 6인 경우를..
문제 숫자 n이 주어졌을 때 패턴에 맞게 정사각형 모양의 별을 출력하라 n = 3의 k제곱 (1 ≤ k
문제 위와 같은 0과 1로 이루어진 영상의 정보가 담긴 배열이 주어졌을 때 영상이 같은 색깔로만 이루어진 경우에는 압축이 가능하고 그렇지 않은 경우에는 영상을 4등분 하여 압축이 가능한지 계속해서 확인하여 영상을 압축한 결과를 출력하라 접근 방식 (0(0011)(0(0111)01)1) 문제의 예시 그림 같은 경우에는 위와 같은 형태로 압축이 가능한데 1780, 2630번 문제를 풀어봤다면 이번 문제 역시 쉽게 풀 수가 있다. 영상의 가로, 세로 길이는 항상 2의 k제곱 형태를 유지하기 때문에 영상을 4등분 하는 것은 이전 문제들을 풀던 것처럼 재귀를 돌 때마다 길이를 절반 나눠주면 된다. 위 이미지처럼 검은색 > 빨간색 > 파란색 순서로 재귀 호출을 하면서 현재 범위가 모두 같은 수로만 이루어져 있는지 ..
문제 위와 같이 그림의 색깔 (파란색:1, 흰색:0)의 정보가 주어질 때 한 가지 색깔로만 이루어진 그림의 종류가 각각 몇 개인지 출력하라 접근 방식 이전에 풀었던 1780번 문제와 같은 문제로 기존에 3으로 나누던 방식에서 2로 나눠주는 부분만 바뀌고 종이의 종류가 흰색과 파란색 두 개만 있다는 것만 다르다. [백준] 1780번 : 종이의 개수 문제 -1, 0, 1로만 이루어진 가로, 세로의 길이가 3^n인 종이가 주어졌을 때 같은 숫자로만 이루어진 종이가 종류별로 몇 개인지 출력하라 접근 방식 현재 종이가 같은 숫자로만 이루어지지 않은 da9dac.tistory.com 이전 글을 참고하면 좋다. 풀이 public class Main { private static int[][] arr; private ..
da9dac
'Java/Algorithms' 카테고리의 글 목록 (17 Page)