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

2022. 10. 4. 11:54·CodingTest/Programmers

0. 문제 링크

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

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

1) 주어진 people 리스트에서 limit 만큼의 최대 두 사람 고르기

2) 필요한 구명보트 반환

 

2. 입출력

# input
people = [70, 50, 80, 50]
limit = 100

# output
return = 3

 

3. 코드

def solution(people, limit):
    answer = 0
    front = 0                                           # 리스트의 처음부터 시작
    rear = len(people)-1                                # 리스트의 끝부터 시작

    people.sort()                                       # 정렬

    while front <= rear:
        answer += 1                                     # 보트 1개 추가
        if people[front] + people[rear] <= limit:       # 몸무게가 가장 적은 사람과 가장 많은 사람이 탑승
            front += 1                                  # front 1 증가
        rear -= 1                                       # rear 1 감소
    
    return answer

 

실행 결과

 

4. 회고

이 문제는 탐욕법(Greedy)에 해당하는 문제로, 탐욕법은 현재 상황에서 가장 좋은 것을 고르는 알고리즘이다. 이 문제를 풀 때는 핵심이 두 가지가 있는데, 첫 번째로는 '정렬'이고, 두 번째로는 '데크(deque)의 front, rear'를 이용하는 것이다. 먼저 정렬을 하는 이유는 몸무게가 적게 나가는 사람과 많이 나가는 사람을 짝으로 구명보트에 타야 하기 때문이다. 데크의 front, rear로 현재 상황에서 몸무게가 가장 적은 사람, 몸무게가 가장 많은 사람의 조합을 찾기 위해서 front, rear를 사용한다. 

 

5. Github

https://github.com/iihye/Algorithm/blob/main/Programmers/life_boat.py

 

GitHub - iihye/Algorithm

Contribute to iihye/Algorithm development by creating an account on GitHub.

github.com

 

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

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

[프로그래머스]행렬의 곱셈(Python)  (0) 2022.10.24
[프로그래머스]N개의 최소공배수(Python)  (0) 2022.10.20
[프로그래머스]짝지어 제거하기(Python)  (0) 2022.10.02
[프로그래머스]영어 끝말잇기(Python)  (1) 2022.09.30
[프로그래머스]공 이동 시뮬레이션(Python)  (0) 2022.09.22
'CodingTest/Programmers' 카테고리의 다른 글
  • [프로그래머스]행렬의 곱셈(Python)
  • [프로그래머스]N개의 최소공배수(Python)
  • [프로그래머스]짝지어 제거하기(Python)
  • [프로그래머스]영어 끝말잇기(Python)
iihye_
iihye_
  • iihye_
    hye-log
    iihye_
    • 분류 전체보기 (296)
      • Development (19)
        • Spring (4)
        • Python (5)
        • React (4)
        • Next.js (1)
        • JavaScript (4)
        • CSS (1)
      • Infra (15)
        • Docker (1)
        • Jenkins (2)
        • Nginx (3)
        • JBoss (1)
        • Windows (3)
        • Linux (3)
        • Kafka (2)
      • Database (1)
        • MongoDB (1)
      • Tools (2)
        • Git (0)
        • Github (1)
        • Document (1)
      • CodingTest (125)
        • Programmers (38)
        • Baekjoon (52)
        • SWEA (27)
        • Jungol (4)
        • Codetree (1)
        • Goorm (3)
      • Education (99)
        • SSAFY 10기 (5)
        • AI Tech 4기 (94)
      • NomadCoder (35)
        • (JS)크롬 앱 만들기 (35)
      • Notice (0)
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.5
iihye_
[프로그래머스]구명보트(Python)
상단으로

티스토리툴바