본문 바로가기

전체 글186

Chapter 05-4. 재귀 알고리즘_8퀸 문제 8퀸 문제(8-Queen problem)서로 공격하여 잡을 수 없도록 8개의 퀸을 8x8 체스판에 놓기퀸은 현재 놓여 있는 지점에서 가로, 세로, 대각선의 8가지 방향으로 직선 이동 가능퀸 배치하기 조건(대각선 규칙 제외)각 열에 퀸을 1개만 배치 - 자신과 같은 열에 있는 다른 퀸을 공격할 수 있으므로각 행에 퀸을 1개만 배치 - 자신과 같은 행에 있는 다른 퀸을 공격할 수 있으므로 분기 조작, 가지 뻗기(branching)가지가 뻗어 나가듯 문제를 나누어 푸는 과정먼저 모든 조합을 나열하는 코드 작성 각 열에 퀸 1개를 배치하는 조합을 재귀적으로 나열package ch05_4;// 각 열에 퀸 1개를 배치하는 조합을 재귀적으로 나열public class Ex01_queenB { static in.. 2024. 8. 11.
Chapter 05-3. 재귀 알고리즘_하노이의 탑 하노이의 탑(towers of Hanoi)작은 원반이 위에, 큰 원반이 아래 위치하도록 쌓은 원반은 3개의 기둥 사이에서 옮기는 문제원반은 1개씩만 옮길 수 있고 큰 원반에서 작은 원반 순으로 쌓으면서 최소 횟수로 옮겨야 함 하노이의 탑package ch05_3;import java.util.Scanner;// 하노이의 탑public class Ex01_hanoi { // no개의 원반을 x번 기둥에서 y번 기둥으로 옮김 static void move(int no, int x, int y) { if (no > 1) { move(no - 1, x, 6 - x - y); } System.out.printf("원반[%d]을(를) %d번 기둥에.. 2024. 8. 11.
Chapter 05-2. 재귀 알고리즘_재귀 알고리즘 분석 재귀 함수 이해package ch05_2;import java.util.Scanner;// 재귀 함수 이해public class Ex01_recur { // 재귀 함수 static void recur(int n) { if (n > 0) { recur(n - 1); System.out.println(n); recur(n - 2); } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("정수를 입력하세요.: "); int x = scan.. 2024. 8. 11.
Chapter 05-1. 재귀 알고리즘_재귀 알고리즘의 기본 재귀란?어떤 사건이 자기 자신을 포함하고 있거나 자신을 사용하여 정의하고 있을 때 이를 재귀적(recursive)이라고 함재귀의 개념을 사용하면 1부터 2, 3, …과 같이 무한히 계속되는 자연수를 아래와 같이 정의 가능1은 자연수 입니다.자연수 n의 바로 다음 정수도 자연수입니다.재귀적 정의(recursive definition)를 사용하여 무한으로 존재하는 자연수를 위의 두 문장으로 정의함 팩도리얼 구하기음이 아닌 정수 n의 팩토리얼(factorial) n!은 아래와 같이 재귀적으로 정의 가능0! = 1n > 0 이면 n! = n * (n - 1)!예를 들어, 10의 팩토리얼인 10!은 109!로 구할 수 있고, 9!은 98!로 구할 수 있음 팩토리얼값을 재귀적으로 구함package ch05_1;im.. 2024. 8. 11.
Chapter 04-2. 스택과 큐_큐란 큐(queue)스택과 마찬가지로 데이터를 일시적으로 쌓아 놓는 자료구조로, 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO, First In First Out)큐에 데이터를 넣는 작업 인큐(en-queue), 데이터를 꺼내는 작업 디큐(de-queue) int형 고정 길이 큐(링 버퍼 사용하지 않고 구현)package ch04_2;// int형 고정 길이 큐(링 버퍼 사용하지 않고 구현)public class IntArrayQueue { private int[] que; // 큐용 배열 private int capacity; // 큐 용량 private int num; // 현재 데이터 개수 // 실행 시 예외 - 큐가 비어있음 public class EmptyIn.. 2024. 8. 4.