programmers.co.kr/learn/courses/30/lessons/42862
설명을 보고 이걸 어떻게 풀어나가야 하지? 라는 생각에
그리고는 문제에 탐욕법이라고 쓰여 있어
탐욕법에 대해 검색을 해봤더니 greedy Algorithm을 확인 할 수 있었다.
알고리즘을 보고 나니 어떻게 풀어야 할 지 감이 잡혀 코드를 썼다.
코드에는 문제가 없다고 생각하였으나, 자꾸 return 값에 오류가 생겨
디버깅을 for문 뒤부터 천천히 흝어 나갔는데
for i in lost 는
2, 4의 값이 차례대로 나와야 정상이나 2만 출력이 되고, 나머지가 출력이 되지 않아서..
멘붕이 왔다.
코드를 보았으나 문제는 없고, 다시 프린트를 해지만 2만 출력이 되는 이상한 상황?
for문에 리스트 remove함수를 쓸 때 오류가 나올 수 있다는 것을 알게 된 순간이였다.
다른 변수에 값을 저장 하여 실행하였더니 이번에는 런타임에러가 아주 깔끔하게 나와주었다.
이 제한사항을 놓치고 있던것
set으로 변수를 차집합을 해주고 다시 코드를 작성하니 다행이 이번에는 통과된 코드가 나올 수 있었다.
def solution(n, lost, reserve):
reserve2 = set(reserve)- set(lost)
lost2 = set(lost) - set(reserve)
for r in reserve2:
if r-1 in lost2:
lost2.remove(r-1)
elif r+1 in lost2:
lost2.remove(r+1)
return n - len(lost2)
- for 문에는 remove와 del을 사용하면 에러가 날 수 있다.
- greedy Algorithm에 대해 알 수 있었다
2021.05.11 - [분류 전체보기] - [Algorithm] 순간의 최적 선택 greedy 탐욕법
- set함수를 이용하여 코드를 작성해 봤다.
[coding_test]오픈채팅방 (0) | 2021.05.13 |
---|---|
[coding_test]멀쩡한 사각형 (0) | 2021.05.12 |
[coding_test]모의고사 (0) | 2021.05.11 |
[coding_test] 5/8일 카카오 인턴쉽 코딩테스트 (0) | 2021.05.10 |
[coding_test]내적 (0) | 2021.05.10 |