[Algorithm] 99클럽 코테 스터디 5일차 TIL | 백준_두 용액(2470번)
·
Algorithm
https://www.acmicpc.net/problem/2470이전과 비슷한 이분탐색 문제라고 생각하고 처음 문제를 봤을 때 low랑 high 초기화를 어떤 수로 해야 되지?mid는 뭐랑 비교해??? 하며 혼란이 있었다. 서치해보니 이 문제는 투 포인터를 사용하는 문제라고 한다.-_- 투 포인터란? 정렬된 배열에서 두 개의 포인터를 사용해서 특정 조건을 만족하는 값을 찾는 알고리즘 기법이다.즉. 배열의 첫번째 값을 left, 배열의 마지막 값을 right로 두고두 합이 찾으려는 값보다 작으면 left를 오른쪽으로 이동 시키고 (합을 키우기 위해)두 합이 찾으려는 값보다 크면 right를 왼쪽을 이동 시킨다. (합을 줄이기 위해) 일단 이 개념을 숙지해두고 풀어나가기 시작했다! 이 문제에서는 mid 대신..
[Algorithm] 99클럽 코테 스터디 4일차 TIL | 백준_기타 레슨(2343번)
·
Algorithm
https://www.acmicpc.net/problem/2343오늘도 이분탐색..^^문제의 접근 방법에 대해서만 살짝 gpt한테 엿듣고 low를 가장 긴 녹화 길이로,high를  모든 녹화 길이의 합으로 설정한 후 블루레이 크기를 mid로 잡는 것을 시작으로 차근차근 풀어나간 문제다.(답을 보지않고 맞혔다는 것에 큰 희열 🥲 나..이제 이분탐색 마스터?) 이 문제의 핵심은 mid 값으로 잘랐을 때 M개로 나눌 수 있는가? 이다. 만약 나눈 값이 M보다 크면mid 값을 더 크게 잡아야 하므로 low = mid + 1을 해주고 나눈 값이 M보다 작거나 같다면 mid값을 더 작게 잡아야 하므로 high = mid - 1을 해준다.이때 정답이 나올 수 있으므로 result값에 mid를 넣어주었다. (최솟값을..
[Algorithm] 99클럽 코테 스터디 3일차 TIL | 백준_선분 위의 점(11663번)
·
Algorithm
https://www.acmicpc.net/problem/11663분명 이진 탐색 알고리즘인건 알겠는데..그래서 어떻게 풀지 고민이 됐던 문제다. 우선 점의 좌표 배열을 오름차순으로 정렬하고배열에서 선분의 시작점 이상인 첫번째 위치를 찾고배열에서 선분의 끝점 이하인 첫번째 위치를 찾는다.  그리고 이 위치를 찾기 위해 이분탐색을 활용한다.import java.util.*;import java.io.*;class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTok..
[Algorithm] 99클럽 코테 스터디 2일차 TIL | 백준_랜선 자르기(1654번)
·
Algorithm
https://www.acmicpc.net/problem/1654 해당 문제는 이분탐색 알고리즘으로 분류된다.이분탐색(Binary Search)은 데이터를 반씩 줄여가며 탐색하는 알고리즘으로 원하는 값을 빠르게 찾기 위해 사용되는 알고리즘이다. 랜선 중 가장 긴 길이를 max라는 변수에 넣고중간값을 구한다. mid = (low + high) / 2mid 값으로 랜선을 나누면 랜선 개수가 나오고,랜선 개수의 합이 N개 보다 크다면 mid 값을 증가시키고, N개 보다 작다면 mid 값을 감소시켜야 한다. if(count >= N){ result = mid; low = mid + 1;//랜선의 최대 길이를 찾아야하므로}else{ high = mid - 1;} 랜선의 최대 길이를 찾아야하므로 m..
[Algorithm] 99클럽 코테 스터디 1일차 TIL | 백준_암기왕(2776번)
·
Algorithm
https://www.acmicpc.net/problem/2776수를 저장하고 특정 수가 있는 지 확인하는 방법에 대해 고민을 해보다가 HashSet을 사용하면 되겠다고 생각했다.HashSet은 해시 테이블 기반 탐색으로 중복되지 않는 값에서 빠른 조회가 필요할 때 사용하곤 한다.시간 복잡도는 평균 O(1)이다. add(E e): 값을 추가하며, 성공 여부를 반환.contains(Object o): 특정 값이 존재하는지 확인. (반환: true/false)remove(Object o): 특정 값을 제거.clear(): 모든 값을 제거.isEmpty(): 비어 있는지 확인.size(): 현재 저장된 요소의 개수를 반환. 나의 풀이import java.util.*;import java.io.*;class M..