정렬
[BOJ] 13164 - 행복 유치원
문제 출처 [BOJ] 13164 - 행복 유치원 풀이 유치원에서 N명의 원생들을 키 순서대로 줄 세우고 조를 나누어 티셔츠를 맞추려고 합니다. 조마다 티셔츠 맞추는 비용은 해당 조의 가장 큰 키의 원생 - 가장 작은 키의 원생 입니다. 원생이 키 순서대로 서있고, 서있는 원생이 인접한 원생들로 조를 이루어야 합니다. 각 원생이 바로 뒤의 원생과 얼마나 키차이가 나는지 확인하여 그 중에서 큰 수들을 조를 이루어야하는 수보다 1 작은 수 만큼 빼주면 그 수를 기점으로 조를 나누게 됩니다. 가장 차이나는 수가 큰 부분을 잘라서 조를 이루면 가장 작은 티셔츠 비용이 나오게 됩니다. 코드 small-j/Algorithm Contribute to small-j/Algorithm development by creat..
[BOJ] 8979 - 올림픽
문제 출처 [BOJ] 8979 - 올림픽 풀이 문제에서 입력받은 국가의 등수만을 알아내면 되기 때문에 알아낼 국가보다 높은 등수를 가진 국가를 세줘야겠다고 생각했습니다. g, s, b라는 변수에 각각 내가 등수를 찾아야 할 국가의 금메달 수, 은메달 수, 동메달 수를 저장해주었습니다. 그리고 모든 국가를 한번씩 봐주면서 cnt를 늘려준 경우는 다음과 같습니다. 1. 금메달 수가 g변수보다 큰 경우 2. 금메달 수가 같으면서 은메달 수가 s변수보다 큰 경우 3. 금메달, 은메달 수가 같으면서 동메달 수가 b변수보다 큰 경우 이 세가지 경우에만 나보다 높은 등수를 가진 국가들이기에 이 국가들을 세주고 그 뒤 등수가 정답이 됩니다. 코드 small-j/Algorithm Contribute to small-j/..
[BOJ] 15922 - 아우으 우아으이야!!
문제 출처 [BOJ] 15922 - 아우으 우아으이야!! 풀이 수직선 위에 그려진 모든 선분의 길이를 겹쳐진 부분을 중복되어 더하지 않고 구하는 문제입니다. 현재 선분의 시작부분이 이전 선분의 끝나는 부분보다 작다면 두 선분은 겹쳐있는 것입니다. 따라서 이전 선분의 끝나는 부분을 현재 선분의 끝나는 부분과 비교하여 둘중 큰 값을 이전 선분의 끝나는 값으로 넣어주었습니다. 만약 현재 선분이 이전 선분과 겹치지 않는다면 새로 vector에 선분을 추가해주었습니다. 이와 같은 방식으로 선분을 추가해주어 마지막에 모든 선분의 끝나는 부분에서 시작하는 부분을 빼어 길이를 알아내 더해주어 답을 구했습니다. 코드 small-j/Algorithm Contribute to small-j/Algorithm developm..
[BOJ] 12764 - 싸지방에 간 준하
문제 출처 [BOJ] 12764 - 싸지방에 간 준하 풀이 준하는 모든 사람들이 항상 정해진 시간에 싸지방을 이용한다는 것을 알고 모든 사람이 기다리지 않고 싸지방을 이용할 수 있는 컴퓨터의 최소 개수와 자리별로 몇 명의 사람들이 사용했는지를 알아내는 것이 목표입니다. 사람들이 컴퓨터를 이용하는 시간이 뒤죽박죽이기 때문에 sort함수를 이용해 정렬하여 가장 먼저 컴퓨터를 이용하는 사람들부터 낮은 수의 컴퓨터를 배정해주었습니다. 그리고 컴퓨터를 사용하기 시작한 사용자의 종료시간과 컴퓨터 번호를 우선순위 큐(A)에 저장하여 종료된 후 바로 다음 사람이 이용할 수 있도록 현재 사용자의 시작시간과 비교하였습니다. 만약 A라는 우선순위 큐에서 사람이 나오게 된다면 그 자리는 비게 되기 때문에 자리숫자를 저장하는 ..
[프로그래머스] 폰켓몬
문제 출처 [프로그래머스] 찾아라 프로그래밍 마에스터 - 폰켓몬 풀이 주인공은 최대 N/2마리의 폰켓몬을 가질 수 있습니다. 근데 이때 가능한 가장 많은 종류의 폰켓몬을 들고가고 싶어합니다. 우선 폰켓몬의 종류가 담긴 배열을 정렬해주었습니다. 배열을 한번 돌아주면서 종류의 갯수를 세주었습니다. 종류가 만약 N/2보다 적다면 그대로 결과를 반환하고, 많다면 N/2만큼 결과를 반환해주었습니다. 코드 small-j/Algorithm Contribute to small-j/Algorithm development by creating an account on GitHub. github.com
[BOJ] 1911 - 흙길 보수하기
문제 출처 백준 1911 - 흙길 보수하기 풀이 입력된 웅덩이를 정렬한 뒤 웅덩이들의 목록을 처음부터 한번 돌아주는 스위핑 알고리즘을 이용해 필요한 널빤지 수를 구해주었습니다. 스위핑을 통해 다음과 같은 과정을 반복했습니다. 1. 널빤지를 놓을 시작 점을 잡아주었습니다. 2. 웅덩이의 시작이 널빤지를 놓을 시작 점보다 더 멀리있다면 시작 점을 갱신해주었습니다. 3. 하나의 웅덩이가 끝나는 부분에서 시작 점을 빼주어 필요한 널빤지의 갯수를 구해주었습니다. 4. 널빤지를 놓은 만큼 시작 점을 뒤로 갱신해주었습니다. 중요한 점은 널빤지가 여러 웅덩이에 걸쳐있을 수 있다는 점입니다. 따라서 가장 마지막으로 놓은 널빤지가 끝나는 부분으로 시작 점을 잡아 최소의 널빤지를 사용할 수 있게 했습니다. 코드 small-..
[BOJ] 7795 - 먹을 것인가 먹힐 것인가
문제 출처 백준 7795 - 먹을 것인가 먹힐 것인가 풀이 심해에 사는 생명체 A는 자신보다 크기가 작은 B를 먹습니다. B를 내림차순 정렬해서 A와 비교해주면 A가 B보다 큰 경우에는 해당 B부터 더 작은 B들을 먹을 수 있다는 의미 입니다. 또한 A 생명체는 자신보다 작은 B를 찾기 위해 모든 B를 찾을 필요가 없습니다. A를 오름차순 정렬해서 B와 비교해주게 되면 현재 A가 이전 A보다 더 작을 것이기 때문에 이전 A가 마지막으로 비교했던 B부터 비교해주면 됩니다. 코드 C++ small-j/BOJ_Algorithm Contribute to small-j/BOJ_Algorithm development by creating an account on GitHub. github.com Java small..