250x250
syk531
하루
syk531
전체 방문자
오늘
어제
  • 분류 전체보기 (166)
    • 개발 (166)
      • java (11)
      • kotlin (7)
      • spring, spring boot (35)
      • Javascript (4)
      • Tyhmeleaf (2)
      • Kafka (17)
      • Docker (8)
      • Kubernetes (3)
      • Elastic Stack (4)
      • react native (3)
      • Web (4)
      • GIS (3)
      • 리눅스 (16)
      • Windows (2)
      • 네트워크 (2)
      • 안드로이드앱 (5)
      • git (2)
      • Tool (15)
      • 프로젝트 (7)
      • 백준알고리즘 (14)
      • DB (2)

인기 글

최근 글

블로그 메뉴

    공지사항

    태그

    • 티스토리챌린지
    • 오블완
    • 뉴스앱

    최근 댓글

    티스토리

    hELLO · Designed By 정상우.
    syk531

    하루

    1912번_연속합_java
    개발/백준알고리즘

    1912번_연속합_java

    2022. 12. 8. 08:44
    728x90
    반응형

    ● 문제

    ● 접근방식

    동적계획법을 이용   
    동적계획법 : 특정 범위까지의 값을 구하기 위해 그것과 다른 범위의 값을 이용해서 효율적으로 구하는 방법   
       
    아래의 조건을 모두 만족할 경우에는 i번째 위치까지의 연속합은 i-1번째 위치까지의 연속합과 i번째 값의 합   
    (i-1번째 까지의 합이 양수 && i-1번째 까지의 연속합과 i번째 값의 합이 양수일 경우)   
    이외의 경우는 i번째 까지의 연속합은 i번째 값으로   
       
    추가로 dp[i] < dp[i-1] 일 수 있으므로 dp[i] 값과 max값을 비교하는 로직 필요   
    ex) 10 -4   
    dp[0] = 10   
    dp[1] = 6  

    ● 코드

    package acmicpc;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.util.stream.Stream;
    
    public class acmicpc1912 {
    	public static void main(String[] agrs) {
    		try {
    			BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    			BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
    
    			int n = Integer.parseInt(reader.readLine());
    			int numArr[] = Stream.of(reader.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
    			
    			int dp[] = new int[n];
    			dp[0] = numArr[0];
    			int max = dp[0];
    			
    			for(int i=1; i<n; i++) {
    				if(dp[i-1] > 0 && dp[i-1] + numArr[i] > 0) {
    					dp[i] = dp[i-1] + numArr[i];
    				} else {
    					dp[i] = numArr[i];
    				}
    				
    				if(max < dp[i]) {
    					max = dp[i];
    				}
    			}
    			
    			writer.append(String.valueOf(max));
    			writer.flush();
    			writer.close();
    		} catch (Exception e) {
    			
    		}
    	}
    	
    }
    728x90
    반응형
    저작자표시 (새창열림)

    '개발 > 백준알고리즘' 카테고리의 다른 글

    2563번_색종이_java  (0) 2022.12.11
    5597번_과제 안 내신 분..?_java  (0) 2022.12.08
    25305번_커트라인_java  (0) 2022.12.08
    25304번_영수증_java  (0) 2022.12.08
    3003번_킹, 퀸, 룩, 비숍, 나이트, 폰_java  (1) 2022.12.08
      '개발/백준알고리즘' 카테고리의 다른 글
      • 2563번_색종이_java
      • 5597번_과제 안 내신 분..?_java
      • 25305번_커트라인_java
      • 25304번_영수증_java
      syk531
      syk531
      기억을 위해 기록을.

      티스토리툴바