[프로그래머스] 그리디#1. 체육복

해피데빙·2023년 1월 15일
0

코딩테스트

목록 보기
46/52
post-custom-banner

reserve에서 -1,+1을 한 값이 lost에 있으면
lost에서 -1,+1을 한 값이 reserve에 있으면

  1. 여벌과 도난이 같으면 한 개니까 일단 reserve에서 빼주기
  2. 한번 빌려줬으면 또 못 빌려주니까 제외하기
    문제) reserve에서 -1,+1을 할 때 더 많은 사람에게 빌려줄 수 있는 형태로 선택을 해야 한다
    해결) 여벌에서 모두 -1을 했을 때, +1을 했을 때로? 일괄이 아닌 게 더 많을 수 있다
    앞에서부터 -1부터 찾으면 될 듯
    오류) lost에서 -1,+1이 아니라 reserve기준으로 -1, +1

오류)

def solution(n, lost, reserve):
    answer = n - len(lost)
    lost.sort()
    reserve.sort()
    for l in lost: 
        if l in reserve: 
            reserve = reserve.remove(l)
            //여기서 remove를 
            lost = lost.remove(l)
        elif l-1 in reserve: 
#       reserve에서 1을 더하면 되니ㄲ
            reserve.remove(l-1)
            answer=answer+1
        elif l+1 in reserve:
#      reserve에서 -1을 하면 되니까
            reserve.remove(l+1)
            answer = answer+1
    return answer

여벌 체육복을 가져온 학생이 도난 당했더라도 앞 번호 학생에게 체육복을 빌려주는 등의 오류를 범할 수 있습니다.

해결 못한 오류)
파이썬은 자바스크립트와 달리 새로운 변수에 할당해도 기존의 값을 참조하는 두개의 변수가 된 것처럼 둘이 분리되지 않는다.
ex. check = [1,2,3]
reserve = check
check.push(4)
reserve //[1,2,3,4]
check //[1,2,3,4]

profile
노션 : https://garrulous-gander-3f2.notion.site/c488d337791c4c4cb6d93cb9fcc26f17
post-custom-banner

0개의 댓글