코테/프로그래머스

[프로그래머스/Lv. 2] 구명보트

imname1am 2023. 4. 9. 18:19
반응형

🔺 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

🔺 코드

 

[알고리즘] 프로그래머스 - 구명보트 - 자바

https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없

easybrother0103.tistory.com

import java.util.*;

class Solution {
    public int solution(int[] people, int limit) {
        int answer = 0;    
        Arrays.sort(people);
        int idx = 0;	// 가벼운 사람 위치

        for(int i = people.length - 1 ; i >= idx ; i--) {	// i: 무거운 사람 위치
            if(people[i] + people[idx] <= limit) {	// ⭐ 가벼운 사람과 무거운 사람 같이 태우기
                idx++;	// 가벼운 사람 태우기
            }
            answer++;	// 보트 수 +1
        }    
       
        return answer;
    }
}
✅ 해결 아이디어
- 무게순으로 정렬하고, 가장 무거운 사람과 가장 가벼운 사람을 함께 보트에 태워보내기


🔺 다른 풀이들

- 풀이1) 투 포인터 활용

 

[프로그래머스] 구명보트 (JAVA)

문제 출처 - Programmers 문제는 여기 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게

blackvill.tistory.com

투 포인터를 활용하셨다.

 

 

- 풀이2)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.Arrays;

class Solution {
    public int solution(int[] people, int limit) {
        Arrays.sort(people);
        int i = 0, j = people.length - 1;
        for (; i < j; --j) {
            if (people[i] + people[j] <= limit)
                ++i;
        }
        return people.length - i;
    }
}

반복문이 멋지다..


💬 느낀 점

쉽다고 생각했는데 혼자 이중반복문을 돌려볼까...하고 코드를 돌려보다가 다른 분 코드를 보고 작성했다..

근데 아예 접근 아이디어 자체가 틀려먹었던 것ㅋㅋㅋ

암튼 담에는 자만하지 말고 열심히 하자,,,,

 

반응형