백준 251

[백준, 자바, 10988번] 팰린드롬인지 확인하기

풀이해당 문제를 푼 이유는정수로 들어온 값을 문자로 변형 후 배열로 만드는 방법에 대해 궁금해서 푼 문제로해결 방법은 아래와 같이 해결할 수 있고 해당 문제는 그 다음의 코드로 해결# 정수를 문자 배열로 변형char[] li = Integer.toString(100).toCharArray(); # 해당 문제 해결 코드import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); char[] li = br.readLine().toChar..

알고리즘 2024.08.27

[백준, 자바, 2512번] 예산(이분 탐색)

풀이진짜 단순한 이분 탐색 문제로각 지방 예산 요청을 정렬 후 이분 탐색 하여 해결 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] li = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); ..

알고리즘 2024.08.24

[백준, 자바, 2110번] 공유기 설치(이분 탐색)

풀이뭔가 문제를 제대로 이해하지 못했어서 시간이 좀 더 걸린 문제로문제 해결 방법은 정말 단순하게 이분 탐색 문제인데왠지 모르게 지난 풀이 방법으론 해결 방법에 대한 뎁스가 한 개 더 있는 듯한 느낌이었어서더 꼬이게 되어버림...그리고 이분 탐색의 결과 도출에 대한 것으로 하나 상기된 것은결과가 나왔을 경우 계속해서 탐색할 때같을 경우와 부족할 경우를 함께 묶어 처리를 하는 것을 다시 상기하게 되었음. import java.io.*;import java.util.*;public class _2110 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new I..

알고리즘 2024.08.24

[백준, 자바, 10989번] 수 정렬하기 3 - 도수 정렬(Counting Sort)

풀이뭔가 간단하게 사용하는 sort() 메서드들로는 메모리 초과가 발생하기에 찾아보니도수 정렬이라는 걸 활용해야한다고 했다.그래서 다른 포스팅된 게시글을 확인했을땐 뭔가 어렵게 느껴져서GPT하고 이야기해보니 정말 간단하게해당 값에 대한 인덱스의 값을 카운팅하는 것으로요소간 비교가 아니기에 모든 데이터를 한 번씩만 접근해서범위 조건이 있는 경우 한정하에 굉장히 빠르게 처리가 가능하다는 걸 알 수 있었다.그래서 아래와 같이 코드를 작성하여 해결물론 기존 도수 정렬 방식과는 다르게 원래 방식은 입력 값에 대한 최댓값 - 최솟값 + 1에 해당하는 만큼 배열을 만들어야 했지만값을 받아오는 대로 넣어 처리하고자 하여 최댓값인 10.000에서 0번째 인덱스를 생각하여10.001만큼 크기를 정하고 이후 입력 값에 해당..

알고리즘 2024.08.03

[백준, 파이썬, 2890번] 카약

풀이문제를 해결하면서 좀 비효율적인데 이게 맞는것 같아서 그냥 적용해서 해결우선 입력 값이 많이 있기에 import sys로 input 을 재정의 하고이후 현재 카약의 위치를 찾아서 해당 카약 번호에 맞는 li의 인덱스에 넣어주기이후 결과인 result 배열에 2중 for문으로비교 대상 카약인 i와 비교할 대상 카약인 j를 비교하는데 i와 j 즉 같은 카약이 아니며 비교할 대상 카약이 더 목표 지점에 가깝고 같은 거리 위치의 카약과 비교한 적이 없는 경우에만카운팅과 s에 넣어 연산하여 해결  import sysinput = sys.stdin.readliner,c = map(int,input().split())li = [0]*(9)for _ in range(r): kayak = input().stri..

알고리즘 2024.05.28

[백준, 파이썬, 2485번] 가로수

풀이주석에 작성한 것처럼 li에는 가로수 위치result에는 가로수 사이의 거리 차이를 넣어주기이후 최대공약수(GCD)를 찾아 해결하는 것을 생각해서처음엔 result를 정렬 후 가장 작은 값과 큰 값의 GCD만을 찾아 적용해봤는데에러가 발생해서 뭔가 설마 모든 경우에 대한 GCD를 찾아야 하는지 고민 후 적용해보니 정답이 나왔다. 처음엔 왜 가장 작은 값과 큰 값의 GCD만 적용하려 했냐면어쨋든 가장 작은 값과 큰 값의 GCD로면 해결이 될 거라고 생각했기에 적용했고, 아직도 반례를 찾지 못해잘은 모르지만 적당히 해결은 했지만... 조금 찝찝하긴하다. import sysinput = sys.stdin.readlinen = int(input())li = [int(input()) for _ in range..

알고리즘 2024.05.27

[백준, 파이썬, 5014번] 스타트링크

풀이dfs, bfs 문제집에 있는 문제로해당 알고리즘을 활용해야 한다는 것을 알고 있었기에 간단히 해결할 수 있었는데만약 모르는 상황이었다면 좀 걸렸을 것 같다.우선 현재인 s 층에서 u,d 버튼을 눌렀을 때 지정 범위 내에 있다면모두 이동할 수 있게 하는데 여기서 무한 순회하지 않도록 방문 표시를 하여 해결할 수 있도록 했으며bfs는 탐색하기 전에 모든 경우에 대해 추가 후 탐색을 하는 것이기에q에 추가하기 전에 먼저 방문 표시를 하여 해결하도록 했으며bfs는 모든 경우를 하나씩 확인하는 것이기에가장 먼저 결과에 다다른 것이 가장 빠른 방법이기 때문에while문을 바로 탈출하도록 하여 해결. import sysfrom collections import deque# dfs 활용f,s,g,u,d = map..

알고리즘 2024.05.02

[백준, 파이썬, 2644번] 촌수계산

풀이처음 접근한 방식은 단순히 자식에서 부모를 찾으면 된다는 것 하나로간단하게 접근하여 제시된 예제는 모두 통과 했지만 계속해서 12%에서 틀렸다고 나오기에 어떤 이유인지 조사했을 때 발견한 것으로첫 번째는 조사해야하는 a,b가 있을 때 a가 b의 부모이던지, 그 반대의 경우에 대한 조건을 찾을 수 있었으며두 번째로는 사실 계속 고민했을 때 찾지 못해 다른 게시글로 알게 된 정말 간단한 것으로더 높은 숫자가 부모가 되는 조건으로어떤 방식으로 해결해야 좋을지 고민한 결과그냥 단순히 부모에 연결된 자식 li를 하나씩 탐색하는 방법을 택하였으며여기에 bfs를 적용하여 각 노드에서 하나씩 모두 탐색하여a와b 모두 연결된 것 중, 가장 적은 촌수를 가진 값을 도출하여 해결할 수 있도록 함. import sysfr..

알고리즘 2024.05.01