문제
https://school.programmers.co.kr/learn/courses/30/lessons/42862
- 주어진 조건은 순서대로 코드를 작성했지만 조금 더 간단하게 만들 필요가 있다고 생각한다.
def solution(n, lost, reserve):
bucket = [1] * (n + 1) # 체육복이 1개씩 있다고 가정한다.
bucket[0] = 0 # 번호는 1번부터 시작한다.
#초기 세팅
for i in lost:
bucket[i] -= 1 # 체육복이 없는 사람은 빼준다.
for i in reserve:
bucket[i] += 1 # 여벌 체육복이 있는 사람은 더해준다.
# 체육복 빌리기
for i in range(1, n):
if bucket[i] != 0:
continue
if bucket[i - 1] >= 2: # 체육복이 2개 이상일 경우에만 빌릴 수 있다.
bucket[i - 1] -= 1
bucket[i] += 1
elif i + 1 <= n and bucket[i + 1] >= 2:
bucket[i + 1] -= 1
bucket[i] += 1
# 체육복 입은 사람 수 count
answer = 0
for student in bucket:
if student >= 1:
answer += 1
return answer
'PS (Problem Solving) > Programmers' 카테고리의 다른 글
[프로그래머스] 로또의 최고 순위와 최저 순위 (0) | 2022.08.14 |
---|---|
[프로그래머스] 숫자 문자열과 영단어 (0) | 2022.08.13 |
[프로그래머스] [1차] 다트 게임 (0) | 2022.08.11 |
[프로그래머스] 없는 숫자 더하기 (0) | 2022.08.10 |
[프로그래머스] 실패율 (0) | 2022.08.09 |