728x90
- 오늘의 학습 키워드 : 그리디(탐욕)
- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42862
- 공부한 내용 본인의 언어로 정리하기
def solution(n, lost, reserve):
answer = 0
# 여벌 체육복을 도난당한 학생을 먼저 처리
reserve_set = set(reserve) - set(lost)
lost_set = set(lost) - set(reserve)
# 여벌 체육복을 빌려줄 수 있는 순서를 위해 정렬
reserve = sorted(reserve_set)
lost = sorted(lost_set)
for k in reserve:
if k in lost:
lost.remove(k)
reserve.remove(k)
for k in reserve: #여벌있는 학생들 추가
if k-1 in lost:
lost.remove(k-1)
elif k+1 in lost:
lost.remove(k+1)
answer = n - len(lost)
return answer
- 오늘의 회고
이 문제는 이미 풀어봤던 문제라 간단하게 주석으로
문제 풀이를 대신하게씀 하... 그리디 문제 빡세다 깊이탐색이랑 그리디는 다시 개념을 공부해봐야될 것 같다
문자열수준일떄가 좋았지ㅜㅜ
- 문제 풀이
- 여벌 체육복을 도난당한 학생 처리:
- reserve_set = set(reserve) - set(lost)는 여벌 체육복을 가지고 있지만 도난당하지 않은 학생들의 집합을 만듭니다.
- lost_set = set(lost) - set(reserve)는 도난당했지만 여벌이 없는 학생들의 집합을 만듭니다.
- 여벌 체육복을 빌려줄 수 있는 순서 준비:
- reserve와 lost를 정렬합니다. 이는 빌려주는 순서를 정하기 위함입니다.
- 여벌 체육복을 가진 학생이 잃어버린 경우 처리:
- 만약 여벌 체육복을 가지고 있는 학생이 잃어버렸다면, 그 학생은 자신에게 체육복을 사용할 수 있으므로 lost와 reserve에서 제거합니다.
- 체육복을 빌려주기:
- 여벌 체육복을 가진 학생이 앞뒤 번호의 학생에게 빌려줄 수 있는지 확인하고, 가능한 경우 lost 리스트에서 해당 학생을 제거합니다.
- 최종적으로 체육 수업에 참여할 수 있는 학생 수 계산:
- 전체 학생 수에서 여전히 체육복이 없는 학생 수를 빼서 체육 수업에 참여할 수 있는 학생 수를 구합니다.
728x90
'이직하고만다(분노)' 카테고리의 다른 글
99클럽 코테 스터디 22일차 TIL + 리트코드 동적계획법(DP) (0) | 2024.08.12 |
---|---|
99클럽 코테 스터디 21일차 TIL + 리트코드 동적계획법(DP) (0) | 2024.08.11 |
99클럽 코테 스터디 19일차 TIL + 프로그래머스 그리디 (1) | 2024.08.10 |
99클럽 코테 스터디 18일차 TIL + 리트코드 깊이/너비 우선 탐색(DFS/BFS) (0) | 2024.08.09 |
99클럽 코테 스터디 17일차 TIL + 리트코드 깊이/너비 우선 탐색(DFS/BFS) (0) | 2024.08.08 |