백준 251

[백준, 자바, 16953번] A -> B

풀이해당 문제는 따로 알고리즘이라고 하기엔 뭐가 없었음.그냥 단순히 bfs로 2를 곱한 수와, 해당수에 10을 곱하고 1을 더한 값을 누적하기그리고 같은 값을 계속 반복하면 시간만 낭비하니 Set에 추가하며 확인 후 추가하며 해결 import java.io.*;import java.util.*;public class _16953 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); long[] AB = Arrays.stream(br.readLine().split(" ")).mapToLon..

알고리즘 2024.10.31

[백준, 자바, 1927번] 최소 힙

풀이해당 문제는 단순히 배열을 사용하여 풀고자 할 경우엔문제가 있다고 판단하여 문제의 타이틀에 나온 것처럼최소 힙 문제 유형이기에 우선순위 큐를 사용하여 문제를 해결.그리고 출력이 많이 되기에 그냥 write하여 한 번에 출력할 수 있도록 하여 해결. import java.io.*;import java.util.*;public class _1927 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new Output..

알고리즘 2024.10.30

[백준, 자바, 1676번] 팩토리얼 0의 개수

풀이해당 문제를 처음에는 그냥 단순히인풋으로 들어오는 값을 가지고 펙토리얼 한 값을 구한 다음 10을 나누며 결과를 출력하고자 했음.다만 인풋값이 500까지 들어오는 것을 보고 그대로 출력을 해보니값이 계속 0으로 출력이 되어 계속 확인을 해보니특정 값 이상 넘어가니 원하는 값이 나오지 않는 것을 확인.이후 규칙을 찾아보려고 해도 찾기 어려워서, 수학적 힌트를 얻고자 찾아보니신기하게 해당 펙토리얼의 값에서, 0인 뒷자리 개수를 알고자 한다면2*5의 지수를 확인하면 되는 것 확인예를 들어 10의 경우 2^1*5^1 이기에 2*5로 볼 땐 1개라 결과를 1로 출력하면 되고100의 경우 2^97*5^24 이기에 2*5의 경우엔 24개이기에 24를 출력하면 됨.이후 IDEA에서 입력 값을 500을 넣어도 괜찮아..

알고리즘 2024.10.30

[백준, 자바, 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