
문제 풀이
풀다가 분명 논리에 문제 없는데 왜 자꾸 터지지 해서 다시 지문을 읽어보니 조건 중 "여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다." 라는 문구 때문에 터지는 것을 알았습니다. 악랄하네요.. 이게 레벨 1.....?
그 외에는 그냥 그리디에 충실하게 풀면 됩니다.
어려운건 없고 아래의 조건만 만족하게끔 설계하면 됩니다.
- 여유분이 있는 학생 중 가장 체격이 작은 학생(본인)이
- 잃어버린 학생 중 본인보다 체격이 -1인 학생에게 먼저 빌려준다
- 본인보다 체격이 -1인 학생이 없다면 +1인 학생에게 빌려준다
- 받은 사람의 번호를 잃어버린 리스트에서 제거
- 전체 학생 수 n에서 남은 잃어버린 사람의 수를 빼면 끝
왜 -1인 사람을 먼저 찾느냐?
=> 본인보다 큰 사람(lost)은 나보다 체격이 큰 사람(reserve)이 옷을 빌려줄 수 있지만 본인보다 체격이 작은 사람은 나 말곤 아무도 빌려줄 수 없기 때문입니다.
풀이 코드
def solution(n, lost, reserve):
# 여벌이 있지만 도난당한 학생은 빌려줄 수 없음. 이거 누가 조건 넣어놨냐
real_reserve = set(reserve) - set(lost)
real_lost = set(lost) - set(reserve)
rr = sorted(list(real_reserve))
for i in rr:
# 내 앞번호가 잃어버린거 먼저
if i - 1 in real_lost:
real_lost.remove(i - 1)
# 내 뒷번호가 다음
elif i + 1 in real_lost:
real_lost.remove(i + 1)
return n - len(real_lost)
반응형
'프로그래머스 - Python > Level 1' 카테고리의 다른 글
| [2021 KAKAO BLIND RECRUITMENT] 신규 아이디 추천 (0) | 2025.10.23 |
|---|---|
| [PCCE 기출 문제] 지폐 접기 파이썬 풀이 (0) | 2025.10.05 |
| [PCCP 기출문제] 동영상 재생기 (0) | 2025.10.05 |
| 자릿수 문제 (0) | 2025.06.01 |