Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 2589
- 포두부 보쌈
- dp
- BFS
- 맛집
- Servlet
- 알고리즘
- 다이나믹 프로그래밍
- Spring
- 쓰레드 풀
- 맛집 투어
- 호유동
- mvc
- 1로 만들기
- 문자열 압축
- 고모네 콩탕
- HTTP API
- 동적 프로그래밍
- 양꼬치
- 투어
- 2020 KAKAO BLIND
- 스프링
- 2638
- 완도산회
- 백준
- 2839
- 프로그래머스
- 서블릿
- 스프링 MVC
- 설탕 배달
Archives
- Today
- Total
프로그래밍 공방
[프로그래머스] 구명보트 본문
문제
programmers.co.kr/learn/courses/30/lessons/42885
코딩테스트 연습 - 구명보트
무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5
programmers.co.kr
문제해결방법
1. 최대 2명이 탈 수 있기 때문에 가장 무거운 사람과 남은 무게에 맞춰 탈 수 있는 사람 중에 가장 무거운 사람을 태운다.
2. 남은 사람들로 위 과정을 반복하며 구명보트의 수를 세준다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package Programmers; public class Solution_구명보트 { public static int solution(int[] people, int limit) { int answer = 0; int[] weight = new int[limit+1]; for(int i=0; i<people.length; i++) weight[people[i]]++; for(int i=weight.length-1; i>=40; i--) { if(weight[i]!=0) { weight[i]--; int remainWeight = (limit - i)>i?i:(limit-i); for(int j = remainWeight; j>=40; j--) { if(weight[j]!=0) { weight[j]--; break; } } answer++; } if(weight[i]!=0) i++; } return answer; } public static void main(String[] args) { int[] people = {70, 80, 50}; int limit = 100; System.out.println(solution(people, limit)); } } | cs |
코드에 대한 피드백이나 더 좋은 아이디어는 언제나 환영입니다.
'개발 > 문제해결' 카테고리의 다른 글
[백준] 1915번 : 가장 큰 정사각형 (0) | 2020.11.27 |
---|---|
[백준] 1504번 : 특정한 최단 경로 (0) | 2020.11.26 |
[프로그래머스] 압축 (0) | 2020.11.25 |
[백준] 14501번 : 퇴사 (0) | 2020.11.25 |
[백준] 9372번 : 상근이의 여행 (0) | 2020.11.24 |