지구정복

[DP] 이코테 - 개미전사 본문

데이터 엔지니어링 정복/Algorithm

[DP] 이코테 - 개미전사

eeaarrtthh 2021. 7. 12. 20:24
728x90
반응형

-자바

package dp;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class AntWarrior1 {
	private static BufferedWriter bw = 
			new BufferedWriter( new OutputStreamWriter(System.out));
	private static int n;		//식량창고의 개수
	private static int[] room;	//식량수가 담길 식량창고 배열
	private static int[] dp; 	//식량창고 수에 따른 결과값이 담길 DP배열
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		n = Integer.parseInt( br.readLine() );
		
		room = new int[n];	//n만큼 식량창고배열 크기 선언
		dp = new int[n];	//n만큼 DP배열 크기 선언
		
		StringTokenizer st = new StringTokenizer( br.readLine() );
		for( int i=0; i<n; i++ ) room[i] = Integer.parseInt( st.nextToken() ); 
		
		dp[0] = room[0];
		dp[1] = Math.max( room[0], room[1] );
		
		//바텀업 방식으로 DP구현
		for( int i=2; i<n; i++ ) dp[i] = Math.max( dp[i-1], dp[i-2]+room[i] );
		
		
		bw.write( dp[n-1] + "\n" );
		bw.flush();
		
		bw.close();
		br.close();
	}
}

 

 

-파이썬

n = int( input() )
r = list( map(int, input().split() ) )
dp = [0] * n

dp[0] = r[0]
dp[1] = max( r[0], r[1] )

for i in range( 2, n ):
    dp[i] = max( dp[i-1], dp[i-2]+r[i] )

print( dp[n-1] )

 

728x90
반응형
Comments