본문 바로가기

전체 글37

[백준/Java] 1541번 : 잃어버린 괄호 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net ✔️ 풀이과정 해당 문제는 백준에서 그리디 알고리즘(Greedy Algorithm)으로 분류된 문제이다. 따라서 각 단계에서 가장 최적인 것을 선택하는 방식으로 풀이하려고 했다. 먼저 입력값으로 받은 문자열을 StringTokenizer 메소드를 사용하여 피연산자와 연산자로 구분해 각각 num, oper 리스트에 저장했다. 다음으로 입력한 값에서 '-' 연산자가 나오면 그 뒤 피연산자들의 연.. 2023. 3. 5.
[백준/Java] 11399번 : ATM https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net ✔️ 풀이과정 해당 문제는 백준에서 그리디 알고리즘(Greedy Algorithm)으로 분류된 문제이다. 정답 비율이 높은 만큼 정렬을 사용하면 쉽게 풀리는 문제이다. 먼저 각 사람이 돈을 인출하는 데 걸리는 시간을 배열 p로 선언한 뒤 값을 입력받고, sort() 메소드를 사용하여 오름차순으로 정렬해 주었다. 다음으로 각 배열의 값을 이전 배열 값까지의 합으로 다시 설정해 준 뒤, Stream의 sum() 메소드를 사용하여 .. 2023. 3. 4.
[백준/Java] 11047번 : 동전 0 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net ✔️ 풀이과정 그리디 알고리즘(Greedy Algorithm)의 가장 대표적인 문제이다. 그리디 알고리즘이란 각 단계에서 가장 최적인 것을 선택하는 알고리즘을 말하는데, 해당 알고리즘을 사용하기 위해서는 문제에서 이전의 선택이 이후의 선택에 영향을 주지 않는 독립적인 상태여야 하고, 최종적인 최적해가 부분 문제에 대한 최적해여야 한다.. 2023. 3. 4.
[백준/Java] 24416번 : 알고리즘 수업 - 피보나치 수 1 https://www.acmicpc.net/problem/24416 24416번: 알고리즘 수업 - 피보나치 수 1 오늘도 서준이는 동적 프로그래밍 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 오늘은 n의 피보나치 수를 재귀호출과 동적 프로그래밍 www.acmicpc.net ✔️ 풀이과정 동적 계획법 (Dynamic Programming, DP) 알고리즘의 가장 대표적인 예시로 들 수 있는 피보나치 문제이다. 동적 계획법은 하나의 큰 문제를 여러 간단한 문제로 나누어 해결할 수 있는 알고리즘을 말한다. 처음 진행되는 계산들을 기록해 두고, 반복되는 계산은 다시 연산하는 것이 아니라 기록된 값을 불러오는 식으로 재활용하면 된다. 피보나치 문제를 푸는데 일.. 2023. 2. 20.