알고리즘/일반 썸네일형 리스트형 백준 7765번: 먹을 것인가 먹힐 것인가 (JAVA) 문제 해석 A는 자기보다 크기가 작은 B를 먹는다. A와 B의 각각 개체별 크기가 입력값으로 주어진다. 알고리즘 A와 B 개체별 크기를 입력 받고 각각 정렬한다. A 개체를 하나씩 꺼내어 먹을 수 있는 B의 양을 구하려할 때 3가지의 경우가 발생한다. 1. A 개체의 크기 B 가장 큰 개체의 크기 : 모든 B를 먹을 수 있다. 3. B 개체를 내림차순으로 탐색해 처음으로 A 개체의 크기가 더 큰 경우를 찾을 시 : 해당 B 개체보다 큰 B 개체를 제외하고는 다 먹을 수 있다. 코드 더보기 백준 18310번: 안테나 (JAVA) 문제 해석 집의 위치들이 입력값으로 주어진다. 안테나를 한 집에 설치하는데 안테나가 설치한 집은 그 집으로부터 모든 집까지의 거리 총 합이 최소가 되어야 한다. 알고리즘 집의 위치를 오름차순으로 정렬한다. 집의 개수가 홀수개일 때는 (N / 2 + 1) 번째 , 짝수개일 때는 (N / 2) 번째 위치한 집이 안테나를 설치해야 할 집이다. 코드 더보기 백준 1758번: 알바생 강호 (JAVA) 문제 해석 A 손님에게 강호가 받는 팁 = A가 원래 주려던 팁 - (A가 커피를 받은 등수 - 1) 위의 식이 음수가 나오면 팁을 받을 수 없고 팁을 최대한 많이 받도록 순서를 변경한다. 알고리즘 원래 주려던 팁은 변하지 않고 등수만 변하기 때문에 원래 주려던 팁이 많은 사람에게 더 빨리 커피를 주면 된다. 코드 더보기 백준 2485번: 가로수 (JAVA) <최대공약수> 문제 해석 현재 심어져 있는 가로수의 위치 정보가 있다. 추가로 가로수를 심는데 기존 가로수 사이에만 심을 수 있다. 가로수를 추가로 심어 가로수의 위치들이 등차수열을 이루게 한다. 알고리즘 가로수 간의 거리를 각각 구하고 그것들의 최대 공약수가 최종 결과를 만들기 위한 가로수 간격이다. 코드 더보기 백준 10157번: 자리배정 (JAVA) <달팽이 문제> 문제 해석 공연장에 들어오는 순서대로 배치조건을 반복하며 좌석을 배치한다. 배치 조건 1. 위쪽 방향으로 올라가면서 위쪽의 끝이거나 위에 이미 배치된 좌석이 나올 때까지 좌석 배치 2. 오른쪽 방향으로 가면서 오른쪽의 끝이거나 오른쪽에 이미 배치된 좌석이 나올 때까지 좌석 배치 3. 아래쪽 방향으로 내려가면서 아래쪽의 끝이거나 아래쪽에 이미 배치된 좌석이 나올 때까지 좌석 배치 4. 왼쪽 방향으로 가면서 왼쪽의 끝이거나 왼쪽에 이미 배치된 좌석이 나올 때까지 좌석 배치 알고리즘 재귀호출을 이용하여 순번마다 좌석을 배치해준다. 배치조건은 현재 조건을 만족 못할시 다음 조건을 사용하면 무조건 만족하므로 위와 같은 조건문을 사용한다. 코드 더보기 백준 2346번: 풍선 터뜨리기 (JAVA) <DEQUE> 문제 해석 원형으로 1번부터 N번까지의 풍선이 놓여있다. 풍선 안에는 종이가 들어있고 종이에는 -N이상 N이하의 정수가 적혀있다. 풍선을 터뜨리고 종이에 적힌 값만큼 이동하는 과정을 반복한다. 알고리즘 원형 큐를 만들고 종이에 음수가 적힌 경우를 적절히 처리하면 될 것 같아 큐를 이용해 원형 구조를 구현하였는데 메모리 초과가 떴다. 이후 이것저것 바꿔보다 덱을 사용해야함을 알게 되었다. 큐는 입력부분과 출력부분이 각각 존재하기에 이용시 따로 본인이 작성을 안하여도 front와 rear에 대해 메모리를 추가로 사용하여 메모리 초과가 발생되는 것 같다. 덱을 이용하여 입력부분과 출력부분을 자유롭게 사용하고 메모리 사용률을 감소시켰다. 또한 종이에 적힌 수가 아닌 터진 풍선의 번호를 출력해야 한다. 따라서 메.. 더보기 백준 2847번: 게임을 만든 동준이 (JAVA) 문제 해석 게임에는 총 N개의 레벨이 있고 레벨 클리어시 점수를 획득하는 구조이다. 입력값으로 낮은 레벨부터 순차적으로 주어지고 각 레벨을 클리어시 얻는 점수가 주어진다. 낮은 레벨보다 높은 레벨일 때 더 많은 점수를 얻어야 한다. 따라서 점수 조정이 필요하고, 원활한 게임을 위해 점수를 총 몇 번 감소시켜야 하는지 출력한다. 점수 1점 감소 당 1번이다. 알고리즘 배열에 레벨별 점수를 담고 배열의 끝부터 (가장 높은 레벨) 바로 전 인덱스와 비교해간다. 바로 전 인덱스의 데이터가 자신보다 작지 않으면 해당 데이터를 (본인 -1) 로 바꾼다. 코드 더보기 백준 1940번: 주몽 (JAVA) 문제 해석 갑옷은 두개의 재료로 구성된다. 재료마다 고유한 번호가 존재하고 두 재료의 고유한 번호 합이 M이 되면 그 재료들로 갑옷 제작이 가능하다. 재료의 개수, M, 각 재료의 고유 번호가 입력값으로 주어지고 만들 수 있는 갑옷의 개수를 출력한다. 알고리즘 N개의 재료들을 2개씩 조합하여 더해서 M이 나오는 경우의 개수를 세어 출력하면 되는 문제이다. 코드 더보기 이전 1 2 3 다음