전체 글 795

백준 2232번 지뢰 (JAVA)

https://www.acmicpc.net/problem/2232 2232번: 지뢰 일직선상에 N개의 지뢰가 같은 간격으로 매설되어 있다. 각각의 지뢰는 충격 강도 Pi가 있어서, Pi를 초과하는 힘을 가하면 Pi만큼의 힘을 발휘하며 터지게 된다. 어떤 지뢰가 터지게 되면, 그 지 www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 충격 강도가 높은 곳에서 터뜨리면 좌,우로 연쇄적으로 터지기 때문에 좌,우보다 높은 것을 터뜨리도록 구현하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.function.Function; public class BOJ_2..

알고리즘 2023.08.23

백준 1443번 망가진 계산기 (JAVA)

https://www.acmicpc.net/problem/1443 1443번: 망가진 계산기 첫째 줄에 다솜이의 계산기가 표시할 수 있는 자리수 D와 다솜이가 하려고하는 연산의 수 P가 주어진다. D는 2보다 크거나 같고, 8보다 작거나 같은 자연수이고, P는 30보다 작거나 같은 음이아닌 www.acmicpc.net 저는 dfs를 통해 문제를 해결하였습니다. dfs를 통해 2~9까지 곱하는 경우를 전부 진행하였고, 길이가 d보다 길면 더 이상 진행하지 않도록 하였고, depth가 p라면 현재 값을 리턴하여 답을 구하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.A..

알고리즘 2023.08.22

백준 1461번 도서관 (JAVA)

https://www.acmicpc.net/problem/1461 1461번: 도서관 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책 www.acmicpc.net 저는 우선순위 큐를 통해 문제를 해결하였습니다. 저는 음수 양수 따로 우선순위 큐를 만들고 우선순위 큐를 통해 절대값이 큰 수 부터 나오도록 하였습니다. 처음에 양수와 음수 가장 큰 절대값을 비교하여 더 큰 값을 저장합니다. 각각의 우선순위 큐에서 하나 빼고 이 값의 2배를 결과값에 더하고, 이후 m-1개를 그냥 빼 버리고, 이 행동을 우선순위 큐가 비어질 때 까지 진행합니다. (2배를 곱하는 이유는 ..

알고리즘 2023.08.21

백준 15815번 천재 수학자 성필 (JAVA)

https://www.acmicpc.net/problem/15815 15815번: 천재 수학자 성필 길이가 100이 넘지 않는 수식이 예제 입력과 같이 공백 없이 입력된다. 수식은 0부터 9까지의 숫자와 연산자 '+', '-', '*', '/' 로만 이루어져 있다. 또한, 수식의 계산 중간 과정의 모든 결과는 항상 2 www.acmicpc.net 저는 스택을 이용해 문제를 해결하였습니다. 처음에는 숫자가 나오면 그 값을 스택에 넣고, 연산자가 나오면 스택에서 두개 빼서 연산해서 다시 스택에 넣어 문제를 해결하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack;..

알고리즘 2023.08.20

백준 1235번 학생 번호 (JAVA)

https://www.acmicpc.net/problem/1235 1235번: 학생 번호 첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부 www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 각각의 길이에 대해 set을 통해 구분할 수 있는지를 판단하여 답을 구하였습니다. package BOJ.etc; import java.awt.print.Pageable; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.HashSet; import ja..

알고리즘 2023.08.19

프로그래머스 다리를 지나는 트럭 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/42583# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 큐를 이용해 문제를 해결하였습니다. 큐를 이용해 다리에 몇 개의 트럭이 존재하는지를 확인하였고, 큐의 무게 합이 weight보다 크거나, 큐의 길이가 bridge_length보다 길다면 큐에서 하나씩 빼주면서 해당 값의 시작 시간 + bridge_length를 하여 해당 트럭이 다 건넌 시간 와 현재 시간을 비교하여 더 큰 값으로 시간을 초기화하여 문제를 해결하였습니다. import jav..

알고리즘 2023.08.18

프로그래머스 단속카메라 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 그리디 방법을 통해 문제를 해결하였습니다. 저는 routes를 진출 지점을 내림차순으로 정렬하였고, 순차적으로 돌면서 현재 route를 벗어나면 진출지점으로 position (카메라 위치)를 변경하고 결과값을 올려 문제를 해결하였습니다. import java.util.*; class Solution { public int solution(int[][] routes) { int answer =..

알고리즘 2023.08.17

프로그래머스 양과 늑대 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 dfs를 이용해 문제를 해결하였습니다. 다른 dfs랑은 조금 다르게 다음에 갈 수 있는 경로를 파라미터로 주었습니다. 갔던 곳을 또 갈 수 있지만, 그때 양과 늑대가 카운터되지 않기 때문에 위와 같이 구현하였습니다. import java.util.*; class Solution { private static final int WOLF = 1; private static final int SH..

알고리즘 2023.08.16

프로그래머스 입국심사 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 이분탐색을 통해 문제를 해결하였습니다. 해당 시간안에 해당 인원을 모두 검사할 수 있는지를 판단하여 검사할 수 있다면, 결과값을 해당 값으로 초기화하고, 끝값을 늘리고, 그렇지 않다면, 시작값을 올려가면서 문제를 해결하였습니다. class Solution { public long solution(int n, int[] times) { long answer = binarySearch(n,tim..

알고리즘 2023.08.15

프로그래머스 징검다리 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/43236 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 이분탐색을 통해 문제를 해결하였습니다. dfs를 통해 모든 경우의 n개를 제거 후를 비교하면 시간이 오래 걸릴 것이라 판단하였습니다. 그래서 이분탐색을 통해 사이 값이 해당 값보다 작다면 합쳐서 해당 값보다 모두 크게 만들었습니다. 이때 합치는 횟수가 n보다 크다면 n개 만큼 합쳐서 최소 값이 해당 값을 만들 수 없기 때문에 false를 리턴하였습니다. true라면 최소값이 해당 값보다 크거..

알고리즘 2023.08.14