250x250
250x250
JinSeopKim
Hello World!
JinSeopKim
전체 방문자
오늘
어제
  • 분류 전체보기 (168)
    • Artificial intelligence (14)
      • DeepDiveToAI (3)
      • Pytorch (3)
      • Etc (8)
    • Back-end (19)
      • Spring (10)
      • JPA (9)
    • Language (24)
      • Python (3)
      • Java (11)
      • Swift (10)
    • Math (4)
      • Linear Algebra (4)
    • CodingTest (79)
      • Algolithm (12)
      • Backjoon (25)
      • Programmers (42)
    • Etc (27)
      • Book Review (3)
      • Adsp (6)
      • Life (2)
      • Docker (1)
      • odds and ends (15)
    • AI Life (0)
      • 생각 넓히기 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • GitHub

인기 글

태그

  • 코딩테스트
  • 프로그래머스
  • 자바
  • certificate
  • java
  • 백준
  • JAVA8
  • AI
  • data
  • 파이썬
  • uArm
  • 카카오
  • 구현
  • ios
  • 선형대수
  • Front-end
  • JPA
  • 머신러닝
  • BOJ
  • DP
  • 개발
  • BFS
  • 문제풀이
  • 개발자
  • 브루트포스
  • SpringMVC
  • 알고리즘
  • swift
  • ADsP
  • Python

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
JinSeopKim

Hello World!

[PGM] 구명보트 (java)
CodingTest/Programmers

[PGM] 구명보트 (java)

2022. 3. 29. 21:02
728x90
728x90

문제링크

https://programmers.co.kr/learn/courses/30/lessons/42885

 

코딩테스트 연습 - 구명보트

무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5

programmers.co.kr

문제풀이

👨🏻‍💻 핵심 스킬 👨🏻‍💻
 Greedy

1. 문제 이해

구명보트를 활용하여 무인도에 갖힌 사람들을 구출할 때 구명보트를 최소한으로 사용한다면 몇개의 구명보트면 구할 수 있을지를 구하는 문제이다. 이 때 구명보트에는 최대 2명의 사람과 제한무게 이하로 탑승할 수 있다.

 

2. 접근방법

Greedy한 접근을 하면 문제를 해결할 수 있다.

사람들의 무게를 정렬하여 최고 무게를 보유한 사람과 최고로 적게 무게가 나가는 사람을 묶어서 탑승하여주면된다. 이 때 무거운 사람이 너무 무거운 경우에는 혼자 탑승시킨다면 그리디로 문제를 해결할 수 있다.

구현코드

package pgm_42885;

import java.util.Arrays;

public class Solution {
    public int solution(int[] people, int limit) {
        Arrays.sort(people);

        int bigPeople = people.length-1;
        int smallPeople = 0;

        int boatCount = 0;
        while (bigPeople >= smallPeople){
            boatCount++;
            if(people[smallPeople] + people[bigPeople] <= limit){
                smallPeople++;
            }
            bigPeople--;
        }
        return boatCount;
    }
}
잘못된 지식이나 궁금한 내용이 있을 경우 편하게 댓글 남겨주시면 감사하겠습니다 :)

 

728x90
728x90
저작자표시 비영리 (새창열림)

'CodingTest > Programmers' 카테고리의 다른 글

야간전술보행 (Python)  (0) 2022.11.30
[PGM] 점프와 순간이동  (0) 2022.08.03
[PGM] 주식 가격 (Java)  (0) 2022.03.27
[PGM_12981] 영어 끝말잇기 (Java)  (0) 2022.03.17
[PGM_77885] 2개 이하로 다른 비트 (Java)  (0) 2022.03.16
    'CodingTest/Programmers' 카테고리의 다른 글
    • 야간전술보행 (Python)
    • [PGM] 점프와 순간이동
    • [PGM] 주식 가격 (Java)
    • [PGM_12981] 영어 끝말잇기 (Java)
    JinSeopKim
    JinSeopKim
    기록📚

    티스토리툴바