알고리즘왕/BOJ 25

[백준 9012] 괄호 / Kotlin

분류 번호 알고리즘 난이도 링크 BOJ 9012 Stack, 문자열 실버 4 풀이 1. 스택 사용 2-1. '(' 일 경우, 스택에 무조건 넣음 2-2. ')' 일 경우 a. 스택이 비어 있으면 NO, 현재 문자열을 검사하는 반복문에 대해서 break b. 스택에 괄호가 있으면 pop 후에 이어서 진행 코틀린 공부도 할 겸, 겸사겸사 오랜만에 알고리즘 풀기 자바 경험에 의존해서 작성하니까 코틀린도 자바스럽게 풀어 버림 😊👌 자바였으면 5분도 안 걸렸을 거 코틀린으로 하려니 아리까리 (ㅠㅠ) 코틀린을 좀 더 코틀린스럽게 짜려면 스프링만 할 게 아니라 코틀린도 해야겠다. (기초만 후다닥 하고 넘어가버리니까 얕은 지식으로 눈 가리고 아웅 하고 있는 듯...ㅠ) 더보기 import java.util.* impo..

알고리즘왕/BOJ 2021.11.22

[BOJ/20057/JAVA] 마법사 상어와 토네이도

날짜 분류 번호 알고리즘 분류 21-04-06 BOJ 20057 구현, 시뮬레이션 링크 문제 요약 토네이도가 중점을 시작으로 이동 이동하면서 각 칸에 있는 모래가 날아감 주변 칸에 비율이 정해져 있고 이동하고 남은 모든 모래는 이동한 칸의 앞칸으로 전부 이동 밖으로 나간 모래의 양 구하기 풀이 기존의 모래를 전부 더함 토네이도가 상하좌우로 움직이면서 모래가 이동할 위치를 tr, tc 배열로 미리 정해놓음 남은 모래를 기존의 모래 총합에서 뺌 더보기 package b20.BOJ_20057_마법사상어와토네이도; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class..

알고리즘왕/BOJ 2021.04.06

[JAVA/백준/20366] 같이 눈사람 만들래?

날짜 분류 번호 알고리즘 분류 링크 21-01-19 BOJ 20366 이분탐색 www.acmicpc.net/problem/20366 문제 요약 N개의 눈덩이 중 4개를 골라 눈두덩이 2개로 만들어진 눈사람 2쌍을 만든다. 이중 두 눈사람의 키 차이가 최소가 되는 값 구하기 눈덩이의 키 = 지름 풀이 눈덩이의 키 순서로 정렬 정렬된 상태에서 a, b, c, d 순차적으로 골랐다고 가정했을 때 a+d와 b+c의 차이가 abcd로 만들수 있는 눈사람의 키 차이임 a, b, d를 3중 for문으로 돌리고(ㅌㅋㅋㅋ ㅠㅠ ) 나머지 c를 b+1과 d-1 사이에서 c의 값 찾기... lower bound로 c의 값 구함 c-1의 값도 고려함 (c-1와 a, b, d가 다를 경우에만) 비고 N이 600인데 시간 제한이..

알고리즘왕/BOJ 2021.01.20

[JAVA/백준/2585] 경비행기

날짜 분류 번호 알고리즘 분류 링크 21-01-20 BOJ 2585 이분탐색&bfs www.acmicpc.net/problem/2585 문제 요약 (0, 0)에서 (10000, 10000)까지 이동할 수 있는 최저의 연료통 용량 구하기 단, 중간에 주유를 할 수 있는 횟수는 K번 이하여야 함 참고사항 연료의 단위는 1L이며 1L당 10km 비행 가능 두 지점의 거리는 평면상의 거리임 풀이 (0, 0)에서 (10000, 10000)까지 필요한 연료량을 r(최대값)으로 두고 이분탐색 진행 mid로 목적지까지 도착할 수 있는지 없는지를 확인 bfs 사용 que에서 좌표를 하나 꺼내고 주어진 연료량으로 목적지까지 갈 수 있으면 true 반환 목적지까지 갈 수 없는데 연료횟수가 K번이면 다음 좌표로 넘어감 목적지..

알고리즘왕/BOJ 2021.01.20

[JAVA/백준/17940] 지하철

날짜 분류 번호 알고리즘 분류 링크 21-01-18 BOJ 17940 다익스트라 www.acmicpc.net/problem/17940 문제 요약 환승 횟수를 최소로 하는 경로 중 소요시간이 가장 짧은 경로 찾기 지하철은 2개의 회사에서 운영하고 있으며, 운영하는 회사가 바뀔 때마다 환승 1회로 계산 풀이 다익스트라 지하철역 번호, 환승횟수, 누적 비용을 포함하는 객체를 만들어서 환승횟수와 비용을 가지고 PQ에 정렬 비고 PQ를 사용한 다익스트라로 간단하게 풀 수 있는 문제 더보기 package b17.BOJ_17940_지하철; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.PriorityQueue; imp..

알고리즘왕/BOJ 2021.01.18

[JAVA/백준/20437] 문자열 게임 2

날짜 분류 번호 알고리즘 분류 21-01-17 BOJ 20437 슬라이딩 윈도우 링크 문제 요약 주어진 문자열에서 어떤 문자를 정확히 K개만 포함하는 sub 문자열 중 최단 길이와 최장 길이를 구함 풀이 26개의 리스트를 만들어서 각 문자에 해당하는 문자들의 위치를 저장 각 문자별로 x번째 문자와 x+n-1번째 문자의 길이를 계산하여 최대값과 최소값을 비교 비고 가볍게 풀기 좋은 문제 더보기 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) th..

알고리즘왕/BOJ 2021.01.17

[JAVA/백준/8983] 사냥꾼

문제 요약 x 축에 사대가 있고 (a,b)에 동물이 존재함 사대로부터 거리가 L 이하인 동물만 잡을 수 있다고 가정했을 때 잡을 수 있는 동물의 수 찾기 사대의 위치 x와 동물의 위치 (a, b) 간의 거리는 |x-a| + b 풀이 동물들의 위치를 기준으로 반복문으로 돌림 해당 동물을 잡을 수 있는 사대는 y좌표 - (L-x좌표)부터 y좌표 + (L-x좌표) 사대의 위치를 정렬하여 min 값보다 크거나 같은 사대의 idx를 구함 (lowerbound) 해당 idx의 사대 위치가 min 이상 max 이하일 경우 정답에서 1 증가 또 또 또 블로그 글을 보고 힌트를 얻은,,, ㅠㅠ 어차피 min의 값보다 같거나 큰 gun의 위치를 찾는 건데 if (gun[idx] = min && gun[idx] 0 ? mi..

알고리즘왕/BOJ 2021.01.12