전체 학생수로 배열을 만들고 잃어버린 학생들을 -1, 여분이 있는 학생들을 +1 해준 뒤 앞뒤 학생을 비교해서 빌려주면 -1, 받으면 +1 해주는 식으로 코드를 구성해 보았다.
1
이고 사이즈가 n
인 새로운 배열을 만든다.lost
에 담긴 숫자의 인덱스는 -1
, reserve
에 담긴 숫자의 인덱스는 +1
을 해준다.[i-1]--, [i]++
)[i+1]--, [i]++
)answer
에 더해준다.대실패.. 도저히 불가능하고 오류가 너무 많이난다. 코드도 난잡하고 조건문만 계속 쌓여간다.
오늘은 인터넷을 찾아보고 공부하는 느낌으로 해봐야겠다.
source : https://kinetic27.github.io/2020/03/03/programmers-gym-suit/
이러한 탐욕법이라는 방식으로 구하는 답이 대부분이었다. 그러나 따로 차집합을 해주는 함수를 만들어서 해결하는 것이어서 최대한 따로 함수를 만들지 않는 방법을 찾아보았다.
테스트를 해보니 18,20번 케이스만 실패를 하길래 질문을 좀 찾아봤다. 두 케이스가 lost
와reserve
가 정렬이 안된 상태로 입력되는 케이스라는 글을 발견해서 맨처음 sort()
로 정렬을 해준 뒤 코드를 돌리니까 테스트도 통과할 수 있었다.