[프로그래머스] 체육복 문제 풀이(탐욕법 Greedy Lv.1) - 파이썬 python
2021. 12. 15. 05:00ㆍ네카라쿠배 취준반 - 프로그래머스 문제 풀이
0. 자세한 설명은 YouTube 영상으로
1-1. Set을 활용한 Solution
def solution(n, lost, reserve):
# 1. Set을 만든다
reserve_only = list(set(reserve) - set(lost))
lost_only = list(set(lost) - set(reserve))
reserve_only.sort();
# 2. 여분을 기준으로 앞뒤를 확인하여 체육복을 빌려준다.
for reserve in reserve_only:
front = reserve - 1
back = reserve + 1
if front in lost_only:
lost_only.remove(front)
elif back in lost_only:
lost_only.remove(back)
#3. 최대한 나눠준 뒤에 lost에 남아있는 학생들은 체육복이 없는 학생들이다.
return n - len(lost_only)
print(solution(5,[2,4],[1,3,5]))
1-2. 배열을 활용한 Solution
def solution(n, lost, reserve):
# 1. student 배열 생성
student = [0]*(n+2)
# 2. reserve / lost 정보 반영
for r in reserve:
student[r] += 1
for l in lost:
student[l] -= 1
# 3. 여분을 기준으로 앞뒤를 확인하여 체육복을 빌려준다.
for i in range(1, n+1):
if student[i] > 0:
if student[i-1] < 0:
student[i] -= 1
student[i-1] += 1
elif student[i+1] < 0:
student[i] -= 1
student[i+1] += 1
# 4. 체육복을 갖고 있는 학생 수를 계산한다.
answer = 0
for i in range(1, n+1):
if student[i] > -1:
answer += 1
return answer
print(solution(5, [2, 4], [1, 3, 5]))
- YouTube 영상에 자세한 내용을 정리했으니 참고하세요.
'네카라쿠배 취준반 - 프로그래머스 문제 풀이' 카테고리의 다른 글
[2021 카카오 코딩테스트] 메뉴 리뉴얼 - 자바 java (0) | 2021.12.22 |
---|---|
[프로그래머스] 체육복 문제 풀이(탐욕법 Greedy Lv.1) - C++ (0) | 2021.12.20 |
[프로그래머스] 프린터 문제 풀이(스택/큐 Lv.2) - 파이썬 python (0) | 2021.12.13 |
[프로그래머스] 체육복 문제 풀이(탐욕법 Greedy Lv.1) - java 자바 (0) | 2021.12.08 |
[프로그래머스] 프린터 문제 풀이(스택/큐 Lv.2) - C++ (0) | 2021.12.06 |