< 문제 >
< 정답 >
< 내가 접근한 방식 >
- 이 문제를 이해한 뒤, 학생들은 3개의 상태가 있다고 생각했다.
1) "체육복은 도난 당해서 빌려야만 수업에 참가할 수 있는 학생"
2) "여벌의 체육복이 있었으나, 도난 당했고 빌려줄 수 없지만 자신은 수업에 참가할 수 있는 학생"
3) "자신의 체육복이 있고, 여벌의 체육복이 있어서 빌려줄 수 있는 학생"
- 전체 학생을 담은 리스트로 시작해서 수업에 참여할 수 없는 학생을 걸러내는 방식.
< 설명 >
- 저는 3가지 상태가 있다고 생각했지만, 제가 참조한 다른 분의 풀이에서는 두 가지 상태로 나누어도 충분했습니다.
set 함수를 통해 reserve와 lost의 차집합(setReserve / setLost )를 구했는데, 이는 setReserve의 값보다 1작거나 큰 요소를 제거하는 것( = 결과적으로 빌릴 수 없는 학생의 집합을 구하는 것)을 위해서였습니다.
이 방법을 통해서
제가 접근한 방식의 2번에 해당하는 학생을 따로 어렵게 구분할 필요가 없어졌습니다.
< 배운 것 >
- 경우의 수에서 참인 값을 계속 얻어나가는 방식과 참 또는 거짓인 값에서 반대의 값을 빼나가는 방식이 있다.
- 경우의 수를 구할 때, 어떤 경우들 간의 구분이 실제 결과값을 도출하는데 있어서 구분할 필요가 있는지 생각해볼 필요가 있다. ( 경우가 다른 것과 결과값을 도출하는데 있어서 경우를 나누는 것은 다르다. )