본문 바로가기

Coding Tests/백준 온라인

(Python) boj_28061

< 문제 >

 

https://www.acmicpc.net/problem/28061

 

28061번: 레몬 따기

성우는 숲에서 레몬을 따와야 한다. 숲은 하나의 수직선으로 표현할 수 있고, 여기에는 레몬 나무 \(N\)그루가 \(x=1\)부터 \(x=N\)까지 일정한 간격으로 자라 있다. 성우는 현재 \(x=0\)에 있으며, 집은

www.acmicpc.net

 

< 풀이 >

 

코드 1

N = int(input())
arr = list(map(int,input().split()))

home = len(arr)+1
j = 1
for i in range(N):
    diff = home - j
    arr[i] -= diff
    j+=1

print(max(arr))

 

변수 diff는 거리 차에 따라 빠져나오는 레몬 개수를 의미한다. 배열 arr의 원소 값은 해당 위치( ex) arr [0] = X1 )의 레몬 개수를 의미하며, diff 값을 빼줌으로써 해당 위치에서 레몬을 땄을 시 집에 가져갈 수 있는 개수가 arr [i]에 담기게 된다. 

 

코드 2

N = int(input())
arr = list(map(int,input().split()))

for i,lemon in enumerate(arr):
    arr[i] = lemon -len(arr)+i
print(max(arr))

 

파이썬 내장함수 enumerate()를 활용한 코드이다.

 

< 참고 >

 

https://www.daleseo.com/python-enumerate/

 

파이썬의 enumerate() 내장 함수로 for 루프 돌리기

Engineering Blog by Dale Seo

www.daleseo.com

 

 

파이썬 다운 코드는 무엇일까..? 코드를 구현할 때마다 항상 고민하게 된다.