https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 백준 9663번 N-Queen 문제 링크입니다. 핵심 N*N크기의 체스판에 N개의 퀸을 놓는다. 퀸은 일직선, 대각선으로 쭉 움직일 수 있다. 즉 각각의 퀸이 일직선과 대각선에 위치하면 안 된다. 1차원 배열을 사용하여, 각 배열의 index를 열, 값을 행으로 본다. 정답 코드 import java.util.Scanner; public class Main { public static int[] arr; publ..
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 백준 14888번 연산자 끼워넣기 문제 링크입니다. 핵심 N개의 수를 받고, N-1개의 연산자를 받는다. 모든 경우의 수를 찾아야 한다. 즉 백트래킹을 통해 모든 경우의 수를 확인하는 재귀 호출 문제이다. 정답 코드 import java.util.Scanner; public class Main { public static int max=Int..
https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 백준 11729번 하노이 탑 이동 순서 문제 링크입니다. 핵심 첫 번째 칸에 있는 원판을 마지막 칸으로 옮기는 것인데, 작은 원판 위에 큰 원판이 올라갈 수 없고, 한 번에 1개씩 옮길 수 있다. 재귀 호출을 통해 해결할 수 있다. 정답 코드 package main; import java.io.*; public class Main { public static StringBuilder ..
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 백준 10828번 스택 문제 링크입니다. 핵심 매우 쉬운 문제이다. 스택에 관련된 문제를 입력하면, 그에 해당하는 스택의 메서드를 실행하면 된다. push의 경우에는 숫자를 한번 더 받는다. 정답 코드 import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Sca..
https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 백준 1620번 나는야 포켓몬 마스터 이다솜 문제 링크입니다. 핵심 이 문제는 순서대로 들어온 포켓몬의 이름을 순서대로 도감에 저장한다. 그리고 숫자를 입력하면 그 숫자에 해당하는 포켓몬 이름이 나오고, 이름을 입력하면 그 포켓몬의 순서가 나와야 한다. 따라서 HashMap을 사용하는 것이 적절하다. 정답 코드 import java.io.BufferedReader; i..
https://www.acmicpc.net/problem/2004 2004번: 조합 0의 개수 첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다. www.acmicpc.net 백준 2004번 조합 0의 개수 문제 링크입니다. 핵심 2와 5개가 짝을 이루어 곱해질 때마다 끝자리에 0이 1개 추가된다. 2와 5의 개수가 다르게 나올 수 있기 때문에, 둘 중 적게 나온 수만큼 0이 추가된다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; publ..
https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백준 15650번 N과 M(2) 문제 링크입니다. 핵심 https://kimtaesoo99.tistory.com/17 [백준]15649번 N과 M(1) (java) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해..
https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백준 15649번 N과 M(1) 문제 링크입니다. 핵심 이 문제는 백트래킹을 사용하여서 풀어야 한다. 재귀 호출을 통해 푸는 방식이다. https://namu.wiki/w/%EB%B0%B1%ED%8A%B8%EB%9E%98%ED%82%B9 백트래킹 - 나무위키 일반적으로 특정 퀘스트나 스토리를 클리어하기 위해 게임을 진행한 뒤, 자동으로 초기 지점으로 돌아오는 기능 등이 없어 왔던 길을 플레이어가..
https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 백준 1002번 터렛 문제 링크입니다. 핵심 이 문제는 해석하면, 두 원의 접점의 개수를 찾는 것이다. 가장 먼저 개수가 무한대일 경우는 두 원의 중심이 같고, 반지름이 같은 경우이다. 그다음 접점이 없는 경우인데, 이는 아래와 같은 그림일 때이다. 이는 다른 원이 내부에 있을 때인데, 식으로 나타내면 (x1-x2)^2+(y1-y2)^2(r1-r2)^2이다. 다음은 접점이 한 개일 때이다. 내접한다는 의미이고, 식은 (x1-x2)^2+(y1-y2)^..
https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net 백준 2477번 참외밭 문제 링크입니다. 핵심 반드시 육각형이고, 시계 반대방향으로 돌아간다. 우리는 가장 큰 가로변과 세로 변을 구하여 가장 바깥쪽의 직사각형을 구하고 그 직사각형에서 작은 직사각형이 잘린 크기를 구할 것이다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args){ Sc..