[프로그래머스] 체육복

cheeeese·2022년 2월 3일
0

코딩테스트 연습

목록 보기
41/151
post-thumbnail

📖 문제

https://programmers.co.kr/learn/courses/30/lessons/42862

💻 코드

다른 사람 코드 참고

def solution(n, lost, reserve):
    answer = 0
    
    set_reserve=set(reserve)-set(lost)
    set_lost=set(lost)-set(reserve)
    
    for i in set_reserve:
        if i-1 in set_lost:
            set_lost.remove(i-1)
        elif i+1 in set_lost:
            set_lost.remove(i+1)
            
    answer=n-len(set_lost)
    return answer

➕ 풀이

  • 여벌옷을 가지고 있는 학생이 도난 당하면 그 학생은 빌려줄 수 없으므로 먼저 set_reserve=set(reserve)-set(lost)set_lost=set(lost)-set(reserve)를 하여 중복 제거
  • set_reserve에서 먼저 앞번호 학생이 여벌옷을 가지고 있다면 그 학생은 lost에서 제거
  • 같은 방법으로 앞번호 학생이 가지고 있지 않지만 뒷번호 학생이 가지고 있다면 그 학생도 lost에서 제거
  • 전체 학생수에서 set_lost 빼서 학생수 구함

set

  • 집합관련 자료형 처리
  • 중복을 허용하지 않는다
  • 순서가 없다(Unordered)
>>> s1 = set([1,2,3])
>>> s1
{1, 2, 3}
>>> s2 = set("Hello")
>>> s2
{'e', 'H', 'l', 'o'}

0개의 댓글