본문 바로가기
Algorithm/프로그래머스

[프로그래머스] 체육복 파이썬 풀이 - Greedy(탐욕법) 알고리즘

by daewooki 2022. 5. 31.
반응형

5명이라고 가정하고 0번째 6번째는 1로 채워준다. 무조건 있다고 가정을 하는 것

 

lost는 1을 빼주고 reserve는 1을 더해준다.

lost = [2, 4]

reserver = [1, 3, 5]

순서 0 1 2 3 4 5 6
초기화 1 1 1 1 1 1 1
lost 처리 1 1 1-1=0 1 1-1=0 1 1
reserve 처리 1 1+1=2 0 1+1=2 0 1+1=2 1
1부터 5까지
for문, i=1
1 2-1=1 0+1=1 2 0 2 1
1부터 5까지
for문, i=2
1 1 1 2 0 2 1
1부터 5까지
for문, i=3
1 1 1 2-1=1 0+1=1 2 1
1부터 5까지
for문, i=4
1 1 1 1 1 2 1
1부터 5까지
for문, i=5
1 1 1 1 1 2 1

 

1~5까지 1보다 큰게 몇 개인지 세면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def solution(n, lost, reserve):
    answer = 0
    uniforms = [1 for i in range(n+2)]
    
    for i in lost:
        uniforms[i]-=1
    for i in reserve:
        uniforms[i]+=1
        
    for i in range(1, n+1):
        if uniforms[i]>1:
            if uniforms[i-1]==0:
                uniforms[i-1]+=1
                uniforms[i]-=1
            if uniforms[i]>1:
                if uniforms[i+1]==0:
                    uniforms[i]-=1
                    uniforms[i+1]+=1
 
    for i in range(1, n+1):
        if uniforms[i]>0:
            answer+=1
    return answer
cs

 

반응형

댓글