티스토리 뷰

1. 문제

 

 

 

2. 정답 코드

def solution(n, lost, reserve):
	# lost와 reserve에서의 중복 제거; 차집합 사용
    _reserve = list(set(reserve) - set(lost))
    _lost = list(set(lost) - set(reserve))
    
    for x in _reserve:
        if x-1 in _lost:
            _lost.remove(x-1)
        elif x+1 in _lost:
            _lost.remove(x+1)
            
    answer = n - len(_lost)
    return answer
  • 문제의 마지막 제한사항 때문에 가장 먼저 lost와 reserve에서의 중복을 제거해야 한다.
  • remove(값): 리스트에서 첫 번째로 등장하는 값을 삭제한다.

 

 


개인적으로 정말 안 풀리던 문제였다 ㅠㅠ 집합을 사용할 생각을 못 했는데, 아래 블로그에서 집합을 사용하는 걸 보고 바로 아이디어가 떠올랐다.

 

[Python] 프로그래머스 - 체육복

- 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어

rain-bow.tistory.com

 

728x90