새소식

반응형
코딩 테스트

[프로그래머스] 체육복

  • -
728x90
반응형

문제

  • 여벌 체육복이 있는 학생이 앞 번호나 뒷 번호 학생에게 체육복을 빌려줄 수 있다.
  • 전체 학생 수 n, 체육복을 도난당한 학생들의 번호 배열 lost, 여벌 체육복을 가져온 학생의 번호 reserve가 있을 때 체육수업을 들을 수 있는 학생의 최댓값 구하기
    • 2 <= n <= 30
  • 여벌 체육복을 가져온 학생이 체육복을 도난당한 경우 다른 학생에게 체육복을 빌려줄 수 없다.

 

풀이

  • 여벌 체육복을 가져온 학생이 체육복을 도난 당한 경우 제외
  • 도난 당한 학생이 앞 번호 -> 뒷 번호 순으로 체육복 빌릴 수 있는지 확인
    • 빌릴 수 없으면 수업 못 듣는다.

 

def solution(n, lost, reserve):
    # 여벌 체육복을 가져온 학생이 체육복을 도난 당한 경우 제외
    lost, reserve = set(lost) - set(reserve), set(reserve) - set(lost)
    
    # 도난 당한 학생이 앞 번호 -> 뒷 번호 순으로 체육복 빌릴 수 있는지 확인
    for num in sorted(list(lost)) :
        if num-1 in reserve :
            reserve.remove(num-1)
        elif num+1 in reserve :
            reserve.remove(num+1)
        else:
            n -= 1
    
    return n

 

References

  • 프로그래머스 고득점Kit 그리디
반응형

'코딩 테스트' 카테고리의 다른 글

[프로그래머스] 110 옮기기  (0) 2023.06.05
[프로그래머스] 표편집  (0) 2023.06.05
[프로그래머스] 퍼즐 조각 채우기  (0) 2023.06.04
[프로그래머스] 카펫  (0) 2023.05.29
[코딩테스트] 피로도  (0) 2023.05.29
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.