본문 바로가기

Algorithm234

[백준] 25083번 : 새싹 - Java https://www.acmicpc.net/problem/25083 25083번: 새싹 아래 예제와 같이 새싹을 출력하시오. www.acmicpc.net 알고리즘 제어문자(이스케이프 시퀀스) 문법적 기능들을 담는 단어들은 그대로 출력 불가 백슬래시(\) + 문자 조합으로 해당 문자를 그대로 출력할 수 있게 만듦 풀이 public class Main { public static void main(String[] args) { String s = " ,r'\"7\n" + // \", \n : 제어문자 "r`-_ ,' ,/\n" + // \n : 제어문자 " \\. \". L_r'\n" + // \\, \", \n : 제어문자 " `~\\/\n" + // \\, \n : 제어문자 " |\n" + // \n :.. 2022. 5. 10.
[백준] 7568번 : 덩치 - Java https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 주의점 키와 몸무게 모두 클 때 = 덩치가 크다 알고리즘 브루트포스 방식 활용 키와 몸무게 담는 2차원 배열 생성 후 이중 반복문 통해 각 배열의 인덱스 모두 탐색 풀이 1. Scanner import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanne.. 2022. 4. 26.
[백준] 2231번 : 분해합 - Java https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 알고리즘 - 브루트 포스 정의 난폭한(무식한) 힘 무차별적 대입 방법 특징 가능한 모든 경우의 수 대입 ➡ 조건에 만족하는 값만을 찾아냄 자원만 충분하다면 원하는 값을 100% 확률로 찾을 수 있음 "빠짐 없이" 완전탐색 알고리즘을 잘 설계하는 게 핵심 구현 방법 1. 예제 //예제1 - 198 198 + 1 + 9 + 8 = 216 198 = 생성자 216 = 198.. 2022. 4. 12.
[백준] 2798번 : 블랙잭 - Java https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 알고리즘 - 브루트 포스 정의 난폭한(무식한) 힘 무차별적 대입 방법 특징 가능한 모든 경우의 수 대입 ➡ 조건에 만족하는 값만을 찾아냄 자원만 충분하다면 원하는 값을 100% 확률로 찾을 수 있음 "빠짐 없이" 완전탐색 알고리즘을 잘 설계하는 게 핵심 풀이 1. Scanner import java.util.Scanner; public class Main { pub.. 2022. 4. 12.
[백준] 11729번 : 하노이 탑 이동 순서 - Java https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 주의점 Scanner + System.out.println(): 시간 초과 에러 발생 알고리즘 재귀 핵심 순서 일정 규칙 찾기 ➡ 최소 단위에서 적용 재귀를 통해 '가장 작은 단위'가 될 때까지 재귀 호출 반복 가장 작은 단위까지 호출되면 그 지점에서 구현한 연산 실행 하노이의 탑 핵심 규칙 큰 원판이 작은 원판 위에 있어서는 안 됨 하노이의 탑 풀이 n개의 원판이 있다고 가정 1. .. 2022. 4. 7.
[백준] 2447번 : 별 찍기 - 10 - Java https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 주의점 Scanner + System.out.println(): 시간 초과됨 출력 방법 : StringBuilder / BufferedWriter 활용하기 알고리즘 N = 3일 때 한 블럭의 모양 블럭의 가운데는 공백 N = 31 N = 32 = 9 N = 33 = 27 N이 3의 제곱수일 때 정리 N = 27 일 때 9개의 블록으로 구분 공백 구간 만족 시 그 구간은 .. 2022. 4. 6.
[백준] 10870번 : 피보나치 수 5 - Java https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이 1. Scanner + 재귀함수 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); System.out.println(fibonacci(N)); .. 2022. 4. 5.
[백준] 1002번 : 터렛 - Java https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 알고리즘 조규현 A 백승환 B A 터렛의 위치(𝑥₁, 𝑦₁) B 터렛의 위치(𝑥₂, 𝑦₂) 마린(류재명) C A와 B가 자신의 위치로부터의 거리 각각 계산 A부터 C까지의 거리 𝑟₁ B부터 C까지의 거리 𝑟₂ ➡ 𝑥₁, 𝑦₁, 𝑟₁, 𝑥₂, 𝑦₂, 𝑟₂ 가 주어졌을 때 C가 있을 수 있는 위치의 수 찾기 각 터렛의 위치를 중심으로 C와의 거리를 반지름으로 하는 원 그리기 ➡ 반지름이 𝑟₁ 인 A 와 반지름이 𝑟₂ 인 B 의 접점의 개수 두 원의 접점.. 2022. 4. 4.
[백준] 3053번 : 택시 기하학 - Java https://www.acmicpc.net/problem/3053 3053번: 택시 기하학 첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다. www.acmicpc.net 택시 기하학 = 맨해튼 거리, Manhatten distance 빨간색 길이 = 파란색 길이 = 노란색 길이 ➡ 2차원 평면에서 가로를 x, 세로를 y라 할 때, 택시 기하학에서의 거리 = 두 점의 x 좌표 차 + 두 점의 y 좌표 차 유클리드 기하학 택시 기하학 * 그림 상의 초록색 선 * 우리가 평소에 아는 '거리' 개념 D(T₁, T₂)² = (𝑥₁ - 𝑥₂)² + (y₁ - y₂)² 원의 넓이 = 𝜋𝑟² = 3 .. 2022. 4. 4.
[백준] 4153번 : 직각삼각형 - Java https://www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 알고리즘 피타고라스의 정리 활용 a2 = b2 + c2 풀이 1. Scanner import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(true) { int x = in.nextInt(); int y = in.nextInt(); int z .. 2022. 4. 1.
[백준] 3009번 : 네 번째 점 - Java .https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net 알고리즘 직사각형 만들기 위해 총 4개의 좌표(x, y) 필요 4개의 좌표 기준, 각 좌표의 x와 y값은 쌍을 이룸 쌍을 이루지 않는 (x, y) 좌표 구하기 예시 4개의 좌표 주어짐 (2, 1), (4, 1), (2, 3), (4, 3) * x 좌표 종류 : 2, 4 (각 2개씩) * y 좌표 종류 : 1, 3 (각 2개씩) 3개의 좌표가 주어질 때 나머지 하나의 좌표 구하는 방법 x = x가 쌍을 이루지 않는 좌표 y = y가 쌍을 이루지 않는 좌표 ➡ 쌍을 이루지 않는 .. 2022. 3. 31.
[백준] 1085번 : 직사각형에서 탈출 - Java https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 알고리즘 직사각형의 경계선까지 가는 거리의 최솟값 (x,y) 위치 기준으로 상, 하, 좌, 우 중 최소값 구하기 풀이 1. Scanner import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int x = in... 2022. 3. 30.