문제
주의할 점
1. test case 12에서 실패하시는 분 : 문제 조건 중 밑 조건 생각
- "여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다."
- ex ) n=3, lost=[2,3], reserve=[3,4] 처럼 3을 기준으로 생각했을 때, 앞 뒤로 각각 잃어버린 사람, 여벌 있는 사람 존재하고, 본인은 여벌이 있으나 잃어 버린 경우
2. test case 1~10에서 실패하시는 분
- lost, reserve는 오름차순 정렬되어서 들어온다는 말이 없다는 것을 염두에 두기
- 즉, lost, reserve를 sort하면 해결될 것
해결 방법
- lost, reserve 전체 고려해서 현재 가지고 있는 체육복 수 담은 배열 student 만들기
- test case 12를 해결하는 근본적인 방법
- ex )
n=5, lost = [2,3], reserve = [3,4]
-> student = [1, 0, 1, 2, 1]
- 체육복 개수 0인 학생을 중심으로 앞, 뒤로 체육복 2개 가지고 있는지 확인
코드
고치기 전의 코드
문제점
- lost와 reserve를 앞에서 부터 검사해서 체육복 가진 사람 검사함
- 따라서, lost, reserve가 오름차순으로 들어오지 않을 것을 대비해서 sort해야 했음
- 해결 : for(int i : lost) student[i]--; 처럼 n명 전체 볼 필요 없이 없는 사람 수만큼만 뺌
0 댓글