본문 바로가기

ETC

[LV1] 체육복 Python

반응형

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

 

코딩테스트 연습 - 체육복

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

programmers.co.kr

 

해당 문제는, 도난당했으면서 여벌이 있는 경우의 친구가 함정이다.

따라서 reserve - lost와 lost - reserve를 각각 구해준다.

 

또 반복문을 어떻게 돌릴까도 문제인데...

 

바깥쪽 순회 리스트에서 데이터를 삭제하면 안된다.

따라서 reserve를 순회하며 lost에서 체육복을 받는 경우를 제거하자.

 

def solution(n, lost, reserve):
	# 도난당했지만 여벌이 있는 경우 - 도난 안당함
    r_l = set(lost) - set(reserve)
    # 여벌이 있지만 도난당한 경우 - 여벌 없음
    r_r = set(reserve) - set(lost)
    # 여벌이 있는 친구들 iteration...
    for i in list(r_r):
    	# 큰 사람에게 먼저 주면 작은 사람이 못받고 큰 사람이 못주는 경우가 발생한다.
        # 작은 사람에게 먼저 주면 큰 사람이 작은사람, 큰 사람에게 모두 줄 수 있음.
        if i - 1 in r_l :
            r_l.remove(i-1)
        elif i + 1 in r_l:
            r_l.remove(i+1)
    return n-len(r_l)
반응형

'ETC' 카테고리의 다른 글

[LV1] 프로그래머스 역순 정렬하기 mysql  (0) 2020.10.03
[LV1] 프로그래머스 2016년 python  (0) 2020.10.03
[LV1] K번째 수 Python  (0) 2020.10.03
[LV1] 모의고사 python  (0) 2020.10.03
[LV1] 완주하지 못한 선수 python  (0) 2020.10.03