728x90
https://programmers.co.kr/learn/courses/30/lessons/42862
문제 풀이
탐욕법으로 푸는 문제이다.
주어진 조건을 보면
여벌의 체육복을 가져온 학생도 도난을 당할 수가 있다.
따라서, lost 배열에서도 reserve 배열에서도 서로 존재 여부를 확인하고 빼줘야한다.
보통 순회를 할 때 왼쪽에서 오른쪽으로 이동하기 꼭 왼쪽 값부터 확인해야한다.
그렇기 때문에 정렬을 해줘야한다. 정렬 하지 않는다면 lost = [1,2] reserve = [2,3] 의 Test Case에서 실패한다.
느낀 점
크게 어렵지 않았지만 열 받는 문제였다.
어떻게 보면 도움이 되었다. 문제를 잘 읽어야한다는 점과 정렬된 배열이라는 말이 없으면 정렬을 해야한다는 점.
코드
def solution(n, lost, reserve):
reserve_ = [r for r in reserve if r not in lost]
lost_ = [l for l in lost if l not in reserve]
reserve_.sort()
for r in reserve_:
if r-1 in lost_: lost_.remove(r-1)
elif r+1 in lost_: lost_.remove(r+1)
return n - len(lost_)
'문제 풀이 > 프로그래머스 (Programmers)' 카테고리의 다른 글
[Python] 프로그래머스 : 소수 찾기 (0) | 2022.07.01 |
---|---|
[Python] 프로그래머스 : 서울에서 김서방 찾기 (0) | 2022.07.01 |
[Python] 프로그래머스 : 수식 최대화 (0) | 2022.06.30 |
[Python] 프로그래머스 : 거리두기 확인하기 (0) | 2022.06.26 |
[Python] 프로그래머스 : 괄호 변환 (0) | 2022.06.23 |
댓글