알고리즘 338

[백준, 자바, 2212번] 센서

풀이해당 문제는 뭔가 문제부터 이해가 어려웠고, 마지막 결과도 스스로 해결하지 못해서 여러 글을 참고하여 이해.우선 해당 문제는N개의 센서를 K개의 집중국 만으로 체크를 할 때,각각의 집중국으로 확인되는 센서의 차의 합이 최소가 되도록 만드는 문제로 이해할 수 있을 듯하다.그래서 처음에는 입력되는 센서를 정렬 후첫 값과 마지막 값을 뺀 차를 K로 나누어 임의의 구간을 찾아 해결하고자 했는데TC결과만 정답이고, 완전한 정답을 찾지는 못하여 여러 글을 보며 이해함.다른 글을 보니 각 센서간 거리의 차를 구한 배열을 구하고,이를 내림차순으로 정렬한 뒤, K-1부터 끝까지 더한 합을 결과로 제출.하지만 이해가 가지 않았음...왜 센서간 거리의 차를 구하고, 왜 K-1부터 더하는 거지?그래서 다시 조사하며, 이해..

알고리즘 2024.10.26

[백준, 자바, 2170번] 선 긋기

풀이처음에는 선이 100만개라서 2차원 정렬을 해도 괜찮을지 고민만 하고그냥 visit으로 범위에 해당 하는 것을 모두 카운팅해서 해결하려 했는데메모리 초과로 실패이후 그냥 정렬을 해서 해결하니 문제 없이 성공...생각보다 1초가 더 후하다고 느껴짐  import java.io.*;import java.util.*;public class _2170 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; int N = Integer.parseI..

알고리즘 2024.10.26

[백준, 자바, 11652번] 카드

풀이요즘은 단순 정수를 받고자 할 때 Scanner로 입력값을 받아서nextInt() 이렇게 많이 사용했는데해당 문제에서 이렇게 풀고 제출하다보니 inputmismatch 이런 에러가 나와서 찾아보니nextInt()는 정수로 변환하려다 보니 에러가 발생한다는 것을 확인.그래서 기존 사용했던 BufferedReader로 받아 제출하니 성공알고리즘에 따른 해결 방법은 뭐 크게 없어서 패스 import java.io.*;import java.util.Map;import java.util.HashMap;public class _11652 { public static void main(String[] args) throws IOException { BufferedReader br = new Bu..

알고리즘 2024.10.26

[백준, 자바, 15489번] 파스칼 삼각형

풀이이전 파스칼의 삼각형이랑 크게 차이가 없었기에, 간단하게 해결할 수 있었다.우선 기존 코드에서 탐색 범위만 더 넓히고, 반복문으로 범위에 해당하는 값을 더하여 해결 import java.io.*;import java.util.Arrays;public class _15489 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] NK = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); ..

알고리즘 2024.10.25

[백준, 자바, 16395번] 파스칼의 삼각형

풀이뭔가 간단하게 N행의 길이를 K만큼 길이로 만들어 쉽게 해결할 수도 있었지만불필요한 배열을 만들고 싶지 않아서 다르게 생각하다뭔가 시간이 더 걸려버림...그래서 아래와 같이 해결. import java.io.*;import java.util.Arrays;public class _16395 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] NK = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toA..

알고리즘 2024.10.25

[백준, 자바, 9625번] BABBA

풀이해당 문제를 봤을 때, 어떤 규칙이 있는지 K=7까지 확인해보니까피보나치처럼 K번째 인덱스 문자열은K-1번째 인덱스 +K-2번째 인덱스 값을 합친  문자열이라는 것을 확인하여처음부터 해당 값의 A와B의 개수를 센 2차원 배열을 만들어 저장 후 체크하여 해결 import java.util.Scanner;import java.util.stream.Collectors;import java.util.Arrays;public class _9625 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int K = sc.nextInt(); int[][] li = new int[K+..

알고리즘 2024.10.25

[백준, 자바, 11057번] 오르막 수

풀이처음에는 N이 1000까지 가는데 해당 풀이가 괜찮으려나 싶었는데잘 되어서 문제없이 해결.우선 길이 10인 배열의 각 인덱스 값을 1로 만들어 두고N에 따라 while문을 반복하여 문제 해결하고자 함.그리고 아래 코드에서 코드를 더 가독성 좋게하려면,while 문에 else 를 없애고, 그냥 if 절 안의 반복문만 사용하면 됨구분한 이유는 계속 쓸때없이 조건문 거치는게 별로여서 그냥 구분 함. import java.util.*;public class _11057 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] li ..

알고리즘 2024.10.23

[백준, 자바, 1463번] 1로 만들기

풀이뭔가 시간 제한이 짧아서 걱정했지만,간단히 해결 가능했음.우선 bfs처럼 deque에 추가하기 전에 추가할 값에 해당하는 li의 index를 변경 후 추가이렇게 함으로써 같은 걸, 추가하지 않고 빠르게 해결하고자 했음. import java.util.*;public class _1463 { static Deque> dq = new ArrayDeque(); public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); boolean[] li = new boolean[N+1]; dq.add(new ArrayList(Arrays.a..

알고리즘 2024.10.23

[백준, 자바, 1780번] 종이의 개수

풀이이번 문제는 크게 설명할 부분은 없지만,그냥 주어지는 종이를 확인 후 서로 다른 것이 확인되면state를 변경 후 탈출하는 조건을 걸어 조금 더 빠르게 해결하고자 했으며만약 state가 false인 경우, 해당 종이를 9분할 하여 다시 확인하며 해결. import java.io.*;import java.util.*;public class _1780 { static int[][] mtx; static int N; static int[] result = {0,0,0}; public static void main(String[] agrs) throws IOException { BufferedReader br = new BufferedReader(new InputStream..

알고리즘 2024.10.23