본문 바로가기
Algorithm/탐욕법

[프로그래머스 lv 1] 체육복

by HANNI하니 2023. 5. 28.

사용 언어 - 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

댓글