Problem Solved
[BOJ][Java] 2747번 - 피보나치 수
문제 백준 2747번 문제: 피보나치 수 피보나치 수 시리즈 문제 풀이 2747번. 피보나치 수 1 2748번. 피보나치 수 2 2749번. 피보나치 수 3 10826번. 피보나치 수 4 10870번. 피보나치 수 5 문제 설명 동적 계획법으로 피보나치 수를 계산하는 문제 n이 45까지 주어진다. 최대 45까지이므로 배열을 만들 때 int형으로 만들어도 숫자 저장이 가능하다. 1번째와 2번째 값, 즉 n의 값이 0이나 1일 때는 초기값인 0과 1을 반환해야 한다. n이 2 이상일 경우에는 피보나치의 식Fn = Fn-1 + Fn-2을 따라 배열에 저장해 주면 된다. 처음에는 재귀함수로 풀려고 시도했지만 시간 초과가 떠서 재귀로는 풀지 못했다. 성공 코드 import java.io.BufferedReader..
[BOJ][Java] 9663번 - N-Queen
문제 백준 9663번 문제: N-Queen 문제 설명 한줄에 하나의 Queen만 존재 가능하므로 1차원 배열 선언 N+1크기의 배열을 선언한 후 재귀로 경우의 수를 구한다. int array는 선언 시 0으로 초기화되므로 배열 요소가 1부터 시작하도록 한다. array를 0부터 채웠을 때 문제점은 아래의 표를 보면 알 수 있다. 0으로 시작했을 때 디버깅한 것을 보면 값이 중복되어 들어간다. arr[i] == arr[row] 조건에 걸려 false가 리턴되었기 때문이다. 조건 1. 같은 열에 있거나 조건 2. 대각선에 위치할 경우를 제외하고 찾는다. 대각선에 위치하기 위한 조건 (기준 x좌표 값 - 대각선 x좌표값)의 절대값 == (기준 y좌표 값 - 대각선 y좌표값)의 절대값 x의 좌표값끼리의 절대값과..
[BOJ][Java] 15652번 - N과 M (4)
문제 백준 15652번 문제: N과 M (4) N과 M 시리즈 문제 해설 보러가기 [BOJ][Java] 15649번 - N과 M (1) [BOJ][Java] 15650번 - N과 M (2) [BOJ][Java] 15651번 - N과 M (3) [BOJ][Java] 15652번 - N과 M (4) 문제 설명 15651번 문제에서 비내림차순 조건이 추가된 문제이다. 비내림차순이므로
[BOJ][Java] 15651번 - N과 M (3)
문제 백준 15651번 문제: N과 M (3) N과 M 시리즈 문제 해설 보러가기 [BOJ][Java] 15649번 - N과 M (1) [BOJ][Java] 15650번 - N과 M (2) [BOJ][Java] 15651번 - N과 M (3) [BOJ][Java] 15652번 - N과 M (4) 문제 설명 1부터 n까지 중복 관계 없이 m개를 고르는 문제 15649번 문제에서 중복을 체크할 필요가 없어졌다. 그래서 앞의 문제들과는 다르게 방문 여부를 체크하는 visited 배열을 쓰지 않아도 됐다. 그리고 Scanner를 사용하면 시간 초과로 실패가 나와서 BufferedReader, BufferedWriter를 사용했다. 성공 코드 import java.io.BufferedReader; import j..
[BOJ][Java] 15650번 - N과 M (2)
문제 백준 15649번 문제: N과 M (2) N과 M 시리즈 문제 해설 보러가기 [BOJ][Java] 15649번 - N과 M (1) [BOJ][Java] 15650번 - N과 M (2) [BOJ][Java] 15651번 - N과 M (3) [BOJ][Java] 15652번 - N과 M (4) 문제 설명 15650번 문제에서 오름차순 조건이 추가된 문제이다. 수열의 첫 번째 수일 때 수열의 이전 수가 현재 수보다 작을 때 위의 두 가지 경우에만 재귀함수를 불러올 수 있도록 if문으로 조건문을 추가해 주었다. if (i == 0 || arr[i-1] < j) dfs(n, m, i+1);성공 코드 import java.util.Scanner; public class Main { static int[] ar..
[BOJ][Java] 2441번 - 별 찍기 - 4
문제 백준 2441번 문제: 별 찍기 - 4 문제 설명 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 오른쪽 정렬로 찍는 문제 [BOJ][Java] 2440번 - 별 찍기 - 3 문제에서 별을 찍는 횟수를 N에서 뺀 개수만큼 공백이 출력되는 반복문을 추가하면 된다. 성공 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.close(); for (int i = 1; i