본문 바로가기
프로그래밍/알고리즘

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

by 숙님 2023. 2. 15.
728x90

풀이 코드 

#의사코드 
#새로운 배열을 만들어서 [1]이라고 가정 
#lost에 들어가면 -=1을 하고 
#reserve에 있으면 +=1을 함 
#반복문을 돌려서 값이 2인 이상인 i를 기준으로 양 옆을 비교, 없으면 나눠줌 
#반복문 들려서 값을 더하고 최종 리턴 

def solution(n, lost, reserve):
    answer = [1]*(n+2)
    cnt = 0 
    for i in range(1, n+1):
        if i in lost: 
            answer[i] -= 1 
        if i in reserve: 
            answer[i] += 1 
    for i in range(1, n+1):
        if answer[i] ==2: 
            if answer[i-1] == 0:
                answer[i] -= 1 
                answer[i-1] += 1 
            elif answer[i+1] == 0:
                answer[i] -= 1 
                answer[i+1] += 1 
    for i in range(1, n+1):
        if answer[i] >= 1:
            cnt += 1 
    return cnt

양 옆을 비교하는 부분이 있어서 인덱스 설정이 조금 까다로운 문제였다 

반복문의 범위도 계속 동일하고 분명히 더 효율적으로 푸는 방법이 있는데 지금은 잘 모르겠다 

문법 강의를 다시 들어야겠다

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

댓글