백준 15596 JAVA 정수 N개의 합

smkim·2021년 10월 18일
0

오늘부터 1일 1백준을 실천하려고한다. 하루에 '1문제'라는 큰 숫자는 아니지만 하루하루 꾸준히 하다보면 성과가 있을 것이라고 믿고 무엇보다도 꾸준히 하는 것이 제일 중요하다고 생각이 되었다.

15596번
Java: long sum(int[] a); (클래스 이름: Test)
a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
리턴값: a에 포함되어 있는 정수 n개의 합

사고과정 : 일단은 long sum(int[] a) 라는 문장이 잘 와닿지가 않았다.
함수를 구현해야 하는 건 알고 있었고 for문으로 sum만 구하면 되겠지? 라고만 생각했던 것 같다.


그저 long type형의 함수였다. 큰 문제는 아니였던 것 같다.
답과 유사하게 코드를 짠 것 같았지만 문제에 대한 이해가 정확하게 되지는 않았던 것 같다.



public class Test1 {

	public static void main(String[] args) {
		int[] a = new int[]; // int형 a 배열 선언
		
		long sum(int[] a) {
			for(int i=0;i<a.length;i++) {
				sum+=a[i]; //sum에다가 a[i]번째들을 더해나가며 누적합을 구한다. 
			}
		}
		System.out.println("sum"+sum);
	

	}

}

정답 코드


public class Test1 {
		
		long sum(int[] a) {
			long sum=0; // sum안에 a 배열 원소의 합을 넣는다.
			
			for(int i=0;i<a.length;i++) {
				sum+=a[i]; //sum에다가 a[i]번째들을 더해나가며 누적합을 구한다. 
			}
		
		return sum; // long형으로 sum이 return 된다. 
	

	}

}
  1. 만약에 long sum=0; 부분을 int로 주게 되면 return 값이 int 범위에 있다면 자동 형변환이 일어나서 문제 없이 실행된다. 그러나 문제의 조건에서 배열 길이가 a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000) 이었으므로 long형으로 선언해주어야 하는 것이다.

  2. 근데, eclipse에서 출력을 해보니 main 메소드가 없다고 자꾸 오류를 출력한다.
    Error: Main method not found in class Test1, please define the main method as:
    public static void main(String[] args)
    or a JavaFX application class must extend javafx.application.Application

  3. 함수명은 sum인데, 매개변수로 (int[] a)로 배열을 받아 객체를 처리한다.

  4. 내 코드는 System.out.println(sum)으로 출력하고자 하였는데, 문제에서 함수를 구현하라고 했으므로 함수의 return값으로 값을 반환해주어야 한다.

profile
컴퓨터공학과 학생 brandy 입니다. 개발+기획에 관심이 있지만, 개발 실력이 뛰어나진 않지만 성장하고자 하기 위해 벨로그를 작성합니다.

1개의 댓글

comment-user-thumbnail
2021년 10월 18일

int의 범위보다 큰 수를 할당하기 위해서는 규칙이 있다. 숫자의 마지막에 L을 붙여야 한다. 그렇지 않으면 컴파일러가 int로 인식하고 에러를 낸다.

public class Main {
public static void main(String[] args){
long val = 2147483648L;
System.out.println(val);
}
}

실행 결과 : 2147483648

L을 붙이지 않고 컴파일을 시도한다면
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The literal 2147483648 of type int is out of range

참고 : https://imasoftwareengineer.tistory.com/48

답글 달기