일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 동적 계획법
- 수학
- DateTime
- python
- 다익스트라
- 백준
- Re
- dfs
- 파이썬
- backjoon
- lambda
- 위클리 챌린지
- Combinations
- 추석맞이 코딩챌린지
- KAKAO BLIND RECRUITMENT
- programmers
- 정규식
- BFS
- java
- 이분탐색
- Zip
- heapq
- 재귀함수
- 카카오
- 프로그래머스
- 자바
- 정렬
- 그리디
- Set
- divmod
Archives
- Today
- Total
상상쓰
[프로그래머스] 체육복 본문
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 |