알고리즘 778

백준 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

프로그래머스 순위 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/49191 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 bfs를 통해 문제를 해결하였습니다. 먼저 이기는 방향과 지는 방향으로 그래프를 저장하였습니다. 각각의 사람에서 bfs를 진행하면서 탐색하는 노드의 개수를 구하였습니다. 이 노드의 개수가 자신을 제외해서 n-1인지를 판별하고 같다면 결과값을 늘려 문제를 해결하였습니다. import java.util.*; class Solution { public int solution(int n, int[]..

알고리즘 2023.08.13

프로그래머스 에어컨 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/214289 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 dfs를 통해 문제를 해결하였습니다. 현재 온도와 실내 온도를 비교하여 다음 온도를 정하고, 현재 만약에 사람이 존재한다면 , t1 t2 사이에 온도가 있는지를 확인하고 사이값이라면 계속 진행합니다. 그 중 가장 낮은 값을 찾아 결과값으로 도출하였습니다. import java.util.*; class Solution { private static final int ON = 1; privat..

알고리즘 2023.08.12