https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서 www.acmicpc.net ✏️ 문제 🔐 문제 해결 주의! 이 문제는 하나 하나 탐색하여 DFS를 시도하면 시간초과되어 통과할 수 없게 된다. 아래는 시간 초과 받은 풀이..ㅠ 더보기 시간 초과 받은 풀이이다. import java.util.*; import java.io.*; public class Main { static int N, r, c; static int count; static int[][] arr; ..
www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 문제 분석 일단, 하노이 탑이란 위에 설명을 보면 알겠지만, 조건이 두가지가 있다. 한번에 한 원판만 옮길 수 있다. 아래의 원판은 항상 위에 원판보다 크다. 그렇다면 과연 어떻게 옮겨야 할까? 일단 원판 3개를 가지고 규칙을 살펴보자. 1. 일단 1번째 타워에서 3번째 타워로 3개의 원판을 옮기기 위해서는 그 위에 있는 두개의 원판을 먼저 가운데로 옮겨야 한다. ( 5번 그림 참조) 2. 가장 작..
www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 피보나치 수 란? 0번째 수와 1번째 수가 1이고, 2번째 수 부터 앞에 두 피보나치 수의 합이 된다. 코드로 표현 import java.util.Scanner; //10870번 문제 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = ..
www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 재귀의 기본적인 구현이라고 할 수 있는 팩토리얼 문제이다. 먼저 팩토리얼 이란? 숫자 n이 주어졌을 때, n 부터 1까지의 곱의 결과를 뜻한다. 0! = 1 1! = 1 2! = 2 x 1 3! = 3 x 2 x 1 .. n! = n x (n-1) x ... x 1 이것을 트리 형태로 만들면, 아래의 그림과 같다. 자 그럼 이제 점화식이 보인다. if (n==1) 일 경우 ∫(n) = 1; if (n==2) 일 경우 ∫(n) = 1; n은 0보다 큰 양의 정수이다. ∫(n)= n x ∫(n-1) 코드로 표현 해보자..
🚀문제 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다. 🐈입력 첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3k이며, 이때 1 ≤ k < 8이다. 🐱👤출력 첫째 줄부터 N번째 줄까지 별을 출력한다. 💬 예제 입력 27 💬 예제 출력 *********************..