본문 바로가기
IT 이야기/알고리즘

정수 합 구하기 알고리즘 C++ / Java / 파이썬

by youngmap 2023. 1. 13.
반응형

백준 15596번 : 정수 N개의 합 문제를 풀면서 정수의 합 구하기 알고리즘을 공부합시다.

 

정수 N개의 합을 구하는 함수를 구현하는 문제입니다.

입력 출력을 하는 것이 아닌 함수를 만드는 문제로 제출 언어의 제약이 있습니다.

 

 

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

 

15596번: 정수 N개의 합

C++17, Java 8, Python 3, C11, PyPy3, C99, C++98, C++11, C++14, Go, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang)

www.acmicpc.net

 

문제에 어떻게 함수명과 리턴값을 사용해야 하는지 주어집니다.

그대로 코딩하시면 문제없이 통과됩니다.

 

 

정수가 n개 있고 범위는 최대 3백만개 입니다.

정수값은 최대 100만입니다.

1,000,000 * 3,000,000 = 3,000,000,000,000

21억을 아득히 넘어가므로,

C++은 long long 데이터형을 java는 long 데이터형을 리턴하도록 문제에서 가이드한다는 것을 알 수 있습니다.

 

 

1. C++

어려운 부분은 없는 문제입니다.

#include <vector>
long long sum(std::vector<int> &a) {
	long long ans = 0;
	for(int i = 0; i < a.size(); i++) {
		ans += a[i];
	}
	return ans;
}

 

 

2. JAVA

C++과 거의 유사합니다.

public class Test {
    long sum(int[] a) {
        long ans = 0;
        for(int i = 0; i < a.length; i++) {
	        ans += a[i];
        }
        return ans;
    }
}

 

 

3. Python 파이썬

파이썬 함수선언 키워드는 def입니다.

sum() 함수가 기본적으로 내장되어 있으므로 바로 리턴해줍니다. 

역시 파이썬은 기대를 저버리지 않습니다. 

def solve(a):
    return sum(a)

 

각 언어 별로 함수 작성법을 배웠습니다.

자주 사용하는 부분을 함수로 만들어서 쓰면 코드 가독성이 좋아지고 코드량이 줄어듭니다.

당연히 오류도 줄어듭니다.

하지만 시간제약이 있는 대회에서는 클린 코드보다 빠르게 답을 도출하는 것이 더 중요합니다.

코드가 짧고 깔끔하다고해서 점수를 더 주지 않기 때문입니다.

반응형