본문 바로가기

Algorithm

(25)
[Java] 백준 1254 : 팰린드롬 만들기 📌 문제 https://www.acmicpc.net/problem/1254 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net 💻 소스코드 package baekjoon; import java.util.Scanner; // S.2, 팰린드롬 만들기 public class B1254 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); int answer = str.le..
[Java] 백준 2003 : 수들의 합2 📌 문제 https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 💻 소스코드 package baekjoon; import java.util.ArrayList; import java.util.List; import java.util.Scanner; // S.4, 수들의 합 2 public class B2003 { public static void main(String[] args) { Scanner scanner..
[Java] 백준 2167 : 2차원 배열의 합 📌 문제 https://www.acmicpc.net/problem/2167 2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 📝 풀이 2차원 배열 생성 & 배열에 값 저장하기 쿼리의 개수 입력 받기 k 만큼 반복하면서 각각의 더한 값 출력 쿼리 범위 내의 값의 합 구하기 💻 소스코드 package baekjoon; import java.util.Scanner; // 2차원 배열의 합, S : 5 public class B2167 { public static void main(Str..
[Java] 백준 25556 : 포스택 💻 문제 https://www.acmicpc.net/problem/25556 25556번: 포스택 포닉스가 순열을 청소할 수 있으면 YES, 불가능하다면 NO를 출력한다. www.acmicpc.net 💻 문제 이해 순열을 청소하는 것은 다음과 같은 과정을 통해 순열을 오름차순으로 정렬하는 것을 뜻한다. 순열 A의 원소들을 앞 원소부터 순서대로 네 개의 스택 중 하나에 삽입한다. 순열 A의 모든 원소를 스택에 삽입했다면, 네 개 중 원하는 스택에서 수를 꺼내는 것을 반복하여 네 개의 스택에서 모든 수를 꺼낸다. 꺼낸 수들을 꺼낸 순서대로 오른쪽에서 왼쪽으로 나열한다. 즉, 가장 처음에 꺼낸 수가 맨 뒤, 가장 나중에 꺼낸 수가 맨 앞에 위치하게 된다. 스택의 특징을 생각해 보면 먼저 넣은 값은 제일 나중에..
[Java] 유클리드 호제법 (Euclidean Algorithm) 📌 유클리드 호제법이란? 두 개의 수가 자연수가 주어졌을 때 최대공약수(GCD)를 구하는 알고리즘을 말한다. 여기서 GCD 란? Greatest Common Divisor. 즉 가장 큰 공통된 약수라는 의미다. // 최대공약수 구하기 public static int gcd(int a, int b) { if (b == 0) { return a; } else { return gcd(b, a % b); } } 코드는 재귀를 사용하여 'b'와 'a'의 나머지를 'b'로 나눈 나머지를 'b'가 0이 될 때까지 반복적으로 호출합니다. 이 시점에서 GCD로 'a'를 반환합니다. 나머지가 0이라면 해당 수가 최종 최대공약수이다. 그렇지 않다면 나머지를 a로 바꾸어 재귀를 반복한다. +) 최소공배수 // 최소공배수 구하..
[Java] 백준 2161 : 카드 1 📌 문제 https://www.acmicpc.net/problem/2161 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 📌 코드 package baekjoon; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Q2161 { // 카드 1 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Queu..
[Java] 백준 16466 : 콘서트 📌 문제 https://www.acmicpc.net/problem/16466 16466번: 콘서트 HCPC (Hanyang Completely Perfect Celebrity)는 한양대학교 최고의 가수에게 주어지는 칭호이다. 한양대학교는 매년 최고의 HCPC를 선발한다. HCPC가 되기란 여간 어려운 게 아니다. 매일 아침 날달걀을 까먹 www.acmicpc.net 📌 코드 package baekjoon; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class Q16466 { // 콘서트 public static void main(String[] ..
[Java] 백준 3028 : 창영마을 📌 문제 https://www.acmicpc.net/problem/3028 3028번: 창영마을 첫째 줄에 정인이가 컵을 섞은 순서가 주어진다. 이 순서는 A, B, C중 하나이고, 문제에 있는 그림을 참고하면 된다. 정인이는 컵을 최대 50번 섞는다. www.acmicpc.net 📌 코드 package baekjoon; import java.util.*; public class Q3028 { // 창영마을 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List list = new ArrayList(Arrays.asList('1', '0', '0')); // 1 String str = scanner.ne..