반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- BigO notation
- 프로그래머스 배열 회전시키기
- 파이썬 컬렉션
- 슈츠 자막
- 주니어개발자
- 리트허브 오류
- programmers 배열 회전
- 프로그래머스 가위바위보
- leftJoin
- 배열의 유사도 파이썬
- 2-layered architecture
- collection python
- 프로그래머스
- Programmers 배열의 유사도
- 스프링 시스템 구조
- 춥고 더운 우리 집
- 개발자 취준
- 춥고더운우리집
- 리트허브 커밋
- 알고리즘
- 프레젠테이션 레이어
- 프로그래머스 가위바위보 풀이
- 공선옥
- 파이썬 특정 문자 제거하기
- 프로그래머스 배열의 유사도 파이썬
- 가위바위보 풀이
- 특정문자 제거하기
- 리트허브 사용법
- 비지니스 레이어
- 프로그래머스 특정 문자 제거하기
Archives
- Today
- Total
기억보다 기록을
[JAVA] 배열에 연속된 정수들의 합 중 최대값을 구하는 프로그램 본문
반응형
Q/
n개의 정수를 입력받아 배열에 저장한다. 이 중에서 0개 이상의 연속된 정수들을 더하여 얻을 수 있는
최대값을 출력하는 프로그램을 만들어라
A/
public class code12 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] data = new int[n];
for(int i=0;i<n;i++)
data[i] = sc.nextInt();
sc.close();
int max = 0;
for(int i=0;i<n;i++) {
for (int j=1;j<n;j++) {
int sum= 0;
for(int k=1;k<=j;k++)
sum +=data[k];
if(sum>max)
max=sum;
}
}
}
}
(시작점 i, 끝점 j. 구간의 합을 sum, 구간의 최대값을 max라 한다.)
위 방법이 틀린 건 아니지만 효율이 떨어진다. 다음과 같은 배열이 있다고 생각해보자.
구간의 시작점과 끝점을 생각해보면, j가 배열의 끝까지 도달하면 i가 증가한다.
i를 검사하는 과정이 중복되기 때문에 j를 그냥 끝에 더해주면 i에서 j까지 합을 구할 수 있다.
2 | 1 | -11 | 7 | 8 | 2 | 9 | 0 |
for(int i=0;i<n;i++) {
int sum= 0;
for(int j=1;j<n;j++)
sum +=data[j];
if(sum>max)
max=sum;
}
반응형
'Language > JAVA' 카테고리의 다른 글
[Effective JAVA] 이펙티브 자바 item11.equals를 재정의하려거든 hashCode도 재정의하라 (0) | 2023.01.15 |
---|---|
[Effective JAVA] 이펙티브 자바 item10.equals는 일반 규약을 지켜 재정의하라 (0) | 2023.01.15 |
[JAVA] 자료구조_클래스, 객체, 참조변수 (1) (0) | 2022.07.02 |
[JAVA] 메소드 호출과 프로그램의 기능적 분할-call by reference, call by value, actual prameter, formal parameter (0) | 2022.06.06 |
[JAVA] n개의 연속된 숫자 나열을 정수로 환산하여 소수인지 판별 후 최대값 구하는 프로그램 (0) | 2022.03.05 |