[프로그래머스]체육복

박민하·2022년 9월 2일
0

python 문제

목록 보기
44/49

문제

✅ 코드

1. 테스트 17, 18 실패

def solution(n, lost, reserve):
    lst = []
    for i in lost:
        if i in reserve:
            lst.append(i)
    for i in lst:
        lost.remove(i)
        reserve.remove(i)
    lst = []
    for i in lost:
        if i+1 in reserve:
            reserve.remove(i+1)
            lst.append(i)
            continue
        elif i-1 in reserve:
            reserve.remove(i-1)
            lst.append(i)
            continue
    for i in lst:
        lost.remove(i)
    return n-len(lost)

2. 다른 사람의 코드

def solution(n, lost, reserve):
    used = set()
    reserve = set(reserve)
    lost.sort()
    for l in lost:
        if l in reserve:
            used.add(l)
        elif (l-1 in reserve) and (l-1 not in used):
            used.add(l-1)
        elif (l+1 in reserve) and (l+1 not in used):
            used.add(l+1)
            
    return n - len(lost) + len(used)
def solution(n, lost, reserve):
	lost, reserve = list(set(lost) - set(reserve)), list(set(reserve) - set(lost))
	for i in reserve:
		if i-1 in lost:
			lost.remove(i-1)
		elif i+1 in lost:
			lost.remove(i+1)
	return n - len(lost)

☑️ 핵심코드

1. sort

n = 5, lost = [4, 2], reserve = [5, 3] 인 경우 정렬하지 않으면 4번이 3번에게 먼저 옷을 빌려가서 2번은 5번에게 빌릴 수 없게된다. 결과적으로 4가 출력되고 오답.

2. set(), add()

set() 자료형 사용. add 메서드로 데이터를 추가할 수 있다.
list 자료형으로 바꿔보니 런타임 에러 및 실패 메세지 반환.


[참고 사이트]
https://chancoding.tistory.com/216

profile
backend developer 🐌

0개의 댓글