반응형
✨Idea
여분의 체육복이 있는 경우도 도난당하게 된다면 빌려줄 수가 없으므로 lost와 reserve에서 서로 겹치는건 뺀다 그 후 체육복이 있는 인덱스는 True로 처리 후 여분의 학생이 앞 뒤를 체크하며 빌려주면 된다
그러나 아래의 소스코드에서 오름차순 과정이 없다면, 먼저 좌쯕체크 후 우측을 체크하는과정만을 거쳐 예외 케이스가 발생한다
예를 들어 아래와 같은 상황이다
n = 5
lost = [2, 4], reserve = [3, 1]
정상적인 상황이라면 1번 학생이 2번에게 3번 학생이 4번에게 빌려 줄 수 있으나, 정렬을 하지 않는다면 3번이 2번에게 빌려주어 4번 학생은 빌릴 수가 없게되므로 처음에 reserve를 정렬하는 과정이 필요하다
(2021년 8월 30일 테스트케이스가 추가되었습니다. 에 해당하는 18, 20번 Test Case가 예외상황인 것 같다.)
소스코드
reserve.sort()
final_reserve = [x for x in reserve if x not in lost]
lost = [x for x in lost if x not in reserve]
check = [True] * n
for i in range(n):
for j in lost:
check[j-1] = False
for reserve in final_reserve:
if (reserve - 1) in lost and check[reserve - 2] == False:
check[reserve - 2] = True
elif (reserve + 1) in lost and check[reserve] == False:
check[reserve] = True
반응형
'🔧알고리즘' 카테고리의 다른 글
[swea] [Java] 5215. 햄버거 다이어트 (0) | 2022.08.11 |
---|---|
[BOJ][파이썬, 자바]11660 구간 합 구하기5 (0) | 2022.08.03 |
[swea]1204. 최빈수 구하기, 파이썬(python) (0) | 2022.05.26 |
[swea]1983. 조교의 성적 매기기, 파이썬(python) (0) | 2022.05.18 |
[swea]2056. 연월일 달력, 파이썬(python) (0) | 2022.05.17 |