상상쓰

[프로그래머스] 체육복 본문

Coding Test

[프로그래머스] 체육복

상상쓰 2021. 6. 30. 11:24

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

 

코딩테스트 연습 - 체육복

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

programmers.co.kr

 

중복된 번호에 대해서는 체육복을 빌리지도 주지도 못하기 때문에 filter 를 통해서 제거한다.

그 후에 도난당한 학생의 번호를 기준으로 조건을 충족하지 못하면 answer 에 1 씩 더하여 최종적으로 n - answer 을 반환한다.

 

def solution(n, lost, reserve):
    answer = 0
    lost_ = list(filter(lambda x : x not in reserve, lost))
    reserve_ = list(filter(lambda x : x not in lost, reserve))
    lost_.sort()
    reserve_.sort()
    c = 0
    
    for i in lost_:
        while True:
            if c == len(reserve_):
                answer += 1
                break
            else:
                if reserve_[c] in [i - 1, i + 1]:
                    c += 1
                    break
                else:
                    if i + 1 < reserve_[c]:
                        answer += 1
                        break
                    else:
                        c += 1
    
    return n - answer
                  
print(solution(5, [2, 4], [1, 3, 5])) # 5

'Coding Test' 카테고리의 다른 글

[백준] 2+1 세일  (0) 2021.06.30
[백준] ZOAC 2  (0) 2021.06.30
[백준] 슬라임 합치기  (0) 2021.06.29
[프로그래머스] 디스크 컨트롤러  (0) 2021.06.29
[프로그래머스] 순위  (0) 2021.06.29
Comments