[코딩테스트/프로그래머스/Python]체육복

Enter·2021년 7월 16일
0

코딩테스트

목록 보기
14/68

💡생각

  1. count변수에 n-lost배열길이를 넣어준다.
  2. lost배열을 for문으로 돌면서 i-1 또는 i+1이 reserve배열에 있으면 count+1을 해준다.
  3. 만약 lost배열에 있는 i가 reserve배열에도 있으면 count에 변화를 주지 않는다.



❓잘못된 코드1

테스트 케이스는 통과했지만 채점을 통과하지 못함.

문제점1. 체육수업을 들을 수 있는 학생의 최댓값을 계산할 때 도난당했지만 여분을 가지고 온 학생은 수업을 들을 수 있다는 것을 고려하지 못했음.
문제점2. 여분을 가지고 왔지만 도난당한 학생을 빌려줄 수 없으므로 reserve배열에서 제외시켜야 함.


해결: reverse배열과 lost배열 둘 다 속하는 사람을 reveerse배열과 lost배열 모두에서 제외시킨다.



💡테스트 통과한 코드

n: 전체학생의 수
lost: 체육복을 도난당한 학생들의 번호가 담긴 배열
reserve: 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열
set_lost: 체육복을 도난당한 학생들중에서 여벌의 체육복을 가져온 학생들을 제외한 배열
set_reserve: 여벌의 체육복을 가져온 학생들중에서 체육복을 도난당한 학생들을 제외한 배열
answer: 체육수업을 들을 수 있는 학생의 최댓값


answer에 전체학생의 수에서 set_lost배열에 있는 학생의 수만큼 뺀 수를 넣어준다. 그리고 set_lost 배열을 for문으로 돌면서 set_reserve에 i-1,i+1이 있는지 확인하고 있다면 체육수업을 들을 수 있는 학생이 한명 더 늘어났으므로 answer+1을 해주고 여벌의 체육복을 빌려줬으므로 set_reserve배열에서 i-1이 빌려줬다면 i-1을 i+1이 빌려줬다면 i+1을 삭제한다.




⏬다른사람의 코드

따로 count변수를 두지않아도 된다는 것을 알게됨.







🔗프로그래머스 - 체육복
https://programmers.co.kr/learn/courses/30/lessons/42862

profile
Cherish the moment :)

0개의 댓글