알고리즘/백준
-
[백준]1107. 리모컨 (Java)알고리즘/백준 2021. 8. 23. 18:41
💡 문제 분석 /** * # 계획 * 1. (고장나지 않은 버튼들로 만들 수 있는 채널들 - 목표 채널)의 최솟값 * 2. 목표 채널은 50000 이하이므로 6자리수까지 만들어보면 될 듯, 6! */ ⌨️ 코드 JAVA import java.util.Scanner; public class Q1107 { static boolean[] chk; // 고장난 버튼 체크, false면 고장 안난 거, true가 고장난 거 static int ret, N, M; public static void main(String[] args){ Scanner sc = new Scanner(System.in); N = sc.nextInt(); M = sc.nextInt(); chk = new boolean[10]; for(in..
-
[백준]1654. 랜선 자르기 (Java)알고리즘/백준 2021. 8. 8. 23:49
💡 문제 분석 이분 탐색을 하면서 N개의 랜선을 만들 수 있는 최대 길이를 찾아나갑니다 int, long 범위 주의 ⌨️ 코드 JAVA import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; // 정리 public class Q1654 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTok..
-
[백준]1699. 제곱수의 합 (Java)알고리즘/백준 2021. 8. 8. 23:42
💡 문제 분석 가능한 모든 제곱 수의 합을 구해보고, 가장 작은 수를 배열에 저장합니다 ⌨️ 코드 JAVA import java.util.Scanner; public class Q1699 { static int[] cache; public static void main(String[] args){ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); cache = new int[N + 1]; for(int i = 1; i
-
[백준]1037. 약수 (java, python)알고리즘/백준 2021. 4. 20. 02:07
📄 링크 약수 💡 문제 분석 어떤 양수 A의 진약수들이 주어질 때, A를 구하는 문제입니다 만약 A = 24라면, 12, 8, 6, 4, 3, 2가 들어올 것입니다. 여기서 규칙은, 처음과 끝을 짝지어서 곱하면 A가 된다는 것입니다. 예외 상황으로, A = 25같은 제곱수가 나온다면 약수가 한 개이기 때문에 따로 처리해줍니다 당연히 정렬이 되서 입력될 줄 알았는데, 아니었습니다. 먼저 정렬을 하고 풀이해줍니다. ⌨️ 코드 JAVA import java.util.Arrays; import java.util.Scanner; public class Q1037 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n..
-
[백준]1026. 보물 (java, python)알고리즘/백준 2021. 4. 20. 02:07
📄 링크 보물 💡 문제 분석 S를 가장 작게 만들기 위해서는 B배열의 가장 큰 수를, A배열의 가장 작은 수와 매칭해서 곱하면 됩니다 A와 B를 정렬해서, A는 작은 수부터, B는 큰 수부터 곱해나갑니다. ⌨️ 코드 JAVA import java.util.Arrays; import java.util.Scanner; public class Q1026 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] a = new int[n]; int[] b = new int[n]; for(int i = 0; i < n; i++) a[i] = sc.nextInt(); for(int ..
-
[백준]1021. 회전하는 큐 (java, python)알고리즘/백준 2021. 4. 20. 02:06
📄 링크 회전하는 큐 💡 문제 분석 리스트의 양 끝에서 삽입, 삭제를 해야 하기 때문에 연결리스트를 사용했습니다 목표 숫자의 인덱스를 리스트에서 찾고, 처음과 끝 중 가까운 곳으로 시프트합니다 파이썬에서는 리스트를 합치는 것이 쉽기 때문에 반복문을 돌리지 않고 한꺼번에 처리할 수 있었습니다 ⌨️ 코드 JAVA import java.util.LinkedList; import java.util.Scanner; public class Q1021 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); int ret = 0; LinkedList li..
-
[백준]1018. 체스판 다시 칠하기 (java, python)알고리즘/백준 2021. 4. 20. 02:05
📄 링크 체스판 다시 칠하기 💡 문제 분석 W로 시작할 때와, B로 시작할 때를 나누어서 모든 경우를 전부 대조해봅니다 시간 복잡도 = O(M * N * 8 * 8) ⌨️ 코드 JAVA import java.util.*; public class Q1018 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] map = new String[50]; int N = sc.nextInt(); int M = sc.nextInt(); for(int i = 0; i < N; i++) map[i] = sc.next(); int ret = 64; for(int i = 0; i
-
[백준]1016. 제곱 ㄴㄴ수 (java, python)알고리즘/백준 2021. 4. 19. 14:25
링크 제곱 ㄴㄴ수 문제 분석 min과 max값이 크지만 범위 자체는 100만이기 때문에 배열로 저장 가능합니다 에라토스테네스의 체와 비슷한 원리로 2부터 sqrt(max)까지 반복하며 제곱수들로 나누어지는지 확인합니다 인덱스 처리를 꼼꼼히 해줍니다 코드 JAVA import java.util.*; public class Q1016 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long min = sc.nextLong(); long max = sc.nextLong(); long count = max - min + 1; boolean[] chk = new boolean[(int)count]; int n = 2; ..