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
양 옆을 비교하는 부분이 있어서 인덱스 설정이 조금 까다로운 문제였다
반복문의 범위도 계속 동일하고 분명히 더 효율적으로 푸는 방법이 있는데 지금은 잘 모르겠다
문법 강의를 다시 들어야겠다
문제
'프로그래밍 > 알고리즘' 카테고리의 다른 글
프로그래머스 - 암호해독 파이썬 (0) | 2023.02.20 |
---|---|
chatGPT 활용하여 알고리즘 풀이 후기 (1) | 2023.02.16 |
컴공생들과 함께하는 알고리즘 스터디 후기 (0) | 2023.02.14 |
프로그래머스 - 푸드 파이트 대회 파이썬 (0) | 2023.02.13 |
이코테 그래프이론 파이썬 (0) | 2023.02.12 |
댓글