정구리의 우주정복

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

ALGORITHM/SOLVE

[프로그래머스] 체육복 파이썬

Jungry_ 2020. 5. 30. 22:51
반응형

문제 :

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

 

 

코딩테스트 연습 - 체육복

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

programmers.co.kr

 

풀이과정 : (탐욕법 문제라는데 잘 모르겠다) 

1. n 만큼 list 로 만들어주기 (1을 가짐)

2. lost 는 -1 을 해주고 reserve 는 +1 을 해주기

3. for 문으로 0인애 앞뒤로 확인해서 2가 있는지 체크하기

ㄴ 2가 있으면 +1 해주고 -1 해주기

4. list 에 1 이상인 애들은 answer 에 +1 해주기 

 

def solution(n, lost, reserve):
    answer = 0
    people = [1 for _ in range(n)]
    for i in lost:
        people[i-1] -= 1
    for j in reserve:
        people[j-1] += 1
    for k in range(len(people)):
        print(k)
        print(people)
        if k ==0:#맨 앞일때 (뒤에만 check)
            if people[k] ==0 and people[k+1] == 2: #맨 앞이 0 이면
                people[k]+=1
                people[k+1] -=1            
        elif k == len(people)-1: #맨 마지막일때 (전 값만 체크)
            if people[k] ==0 and people[k-1] == 2:
                people[k] += 1
                people [k-1] -=1
        else:           
            if people[k] == 0:
                if people[k-1] == 2:
                    people[k] +=1 
                    people[k-1] -=1
                    
                elif people[k+1] ==2:
                    people[k] += 1
                    people[k+1] -=1
                    
    for l in people:
        if l > 0:
            answer += 1
    print(answer)
    return answer

 

반응형
Comments