본문 바로가기

알고리즘112

[백준 / 예산 / JAVA / 이진 탐색] https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 문제 접근 예산액을 배열로 만들고 값을 저장, 이 문제에선 배열을 정렬안하고도 풀 수 있던데 난 일단 정렬해서 풀었다. 총 요청 예산액이 총 예산보단 작다면 가장 큰 요청 예산액을 출력 아니라면 상한액을 탐색해 나간다. 상한액은 반씩 잘라가면서 탐색해가고 배열 값들과 현재 상한액을 비교하면서 작은 값은 그대로 합하고 큰 값은 상한액을 더한다. 더한 총 값이 총 예산보다 작으면 return시켜.. 2023. 5. 6.
[백준 / 입국심사 / JAVA / 이진탐색] https://www.acmicpc.net/problem/3079 3079번: 입국심사 첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 1,000,000,000) 다음 N개 줄에는 각 심사대에서 심사를 하는데 걸리는 시간인 Tk가 주어진다. (1 ≤ Tk ≤ 109) www.acmicpc.net 문제 접근 int 타입의 범위를 벗어난 값들은 long타입으로 지정해주자 문제의 핵심은 반씩 시간을 줄여가면서 mid에 해당하는 시간이 통과해야되는 인원을 모두 포함하면서 최소여야한다. while문에서 통과해야되는 인원을 충족했을 때의 시간을 계속 저장해가는데, 왼쪽 범위가 오른쪽 범위를 넘기 직전까지 계속 돌기 때문에 범위가 가장 좁혀졌을 때 인원을 충족한 시간 값이 result에.. 2023. 5. 4.
[SWEA / 간단한 소인수분해 / JAVA] https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5Pl0Q6ANQDFAUq&categoryId=AV5Pl0Q6ANQDFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=2 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 접근 소인수분해는 소수의 곱으로 이루어진 수이기 때문에 구성하는 소수로 나눴을 때 해당 소수의 갯수만큼 나머지가 0으.. 2023. 5. 4.
[SWEA / 날짜 계산기 / JAVA] https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PnnU6AOsDFAUq&categoryId=AV5PnnU6AOsDFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=2 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 접근 두 번째 날짜가 첫 번째 날짜의 몇 번 째 날짜인지 구하라는데 처음엔 단순 두 날짜의 차이를 구하는지 알았는데,.. 2023. 5. 3.
[SWEA / 두 개의 숫자열 / JAVA] https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PpoFaAS4DFAUq&categoryId=AV5PpoFaAS4DFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=2 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 접근 두 배열의 길이에 따라 조건을 걸어서 실행 처음엔 작은 쪽 배열의 인덱스를 통째로 한 칸 씩 움직일려고 생각했는.. 2023. 5. 2.
[백준 9934번 / 완전 이진 트리 / JAVA / DFS] https://www.acmicpc.net/problem/9934 9934번: 완전 이진 트리 상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래 www.acmicpc.net 문제 접근 익숙하지 않은 형태라 정답에 도달하기 힘들어 방법을 참고하였다. 핵심은 노드 방문 순서가 담긴 배열을 반씩 쪼개가며 중간값을 해당 깊이 list에 삽입한다. dfs라 왼쪽 노드부터 쭉 탐색해간다. 마지막 왼쪽 노드에 도달할 경우 시작 인덱스와 마지막 인덱스의 번호가 [0, 0]이라 중간 인덱스는 0이 되어 arr[0] 값이 해당 깊이 list에 담기게 될 것이다.. 2023. 5. 1.