사용 언어 - Python3
문제 - 체육복
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정답
그리디 알고리즘 (정답 맞춘 여부 X)
1. 여벌의 체육복이 있는 학생도 체육복을 도난 당했을 수도 있다.
2. 양쪽 학생이 모두 빌려줄 수 있다면, 왼쪽 학생을 우선적으로 빌려준다.
def solution(n, lost, reserve):
# 여벌이 있는 학생도 체육복을 도난 당했을 수도 있다.
# => 본인이 사용해야 하기 때문에, 다른 학생에게 체육복 빌려줄 수 없다.
set_reserve = set(reserve) - set(lost)
set_lost = set(lost) - set(reserve)
for r in set_reserve:
# 양쪽 학생이 모두 빌려줄 수 있다면, 왼쪽 학생에게 먼저 부여
if r-1 in set_lost:
set_lost.remove(r-1)
# 왼쪽 학생이 없을 경우, 오른쪽 학생이 빌려줄 수 있는 지 확인
elif r+1 in set_lost:
set_lost.remove(r+1)
return n-len(set_lost)
탐욕법 = 그리디 알고리즘
최적해를 구하는 데 사용되는 근사적인 방법
그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식
레퍼런스
- 좋은 풀이
[Python] 프로그래머스 - 체육복
- 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어
rain-bow.tistory.com
- 정답 깃허브
GitHub - yyeongeun/codingtest: 코딩테스트 공부
코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.
github.com
'Algorithm > 탐욕법' 카테고리의 다른 글
[프로그래머스 lv 3] 단속카메라 (0) | 2023.12.21 |
---|---|
[프로그래머스 lv 2] 구명보트 (1) | 2023.12.20 |
[프로그래머스 lv 2] 조이스틱 (0) | 2023.12.19 |
댓글