백준 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)
각 언어 별로 함수 작성법을 배웠습니다.
자주 사용하는 부분을 함수로 만들어서 쓰면 코드 가독성이 좋아지고 코드량이 줄어듭니다.
당연히 오류도 줄어듭니다.
하지만 시간제약이 있는 대회에서는 클린 코드보다 빠르게 답을 도출하는 것이 더 중요합니다.
코드가 짧고 깔끔하다고해서 점수를 더 주지 않기 때문입니다.
'IT 이야기 > 알고리즘' 카테고리의 다른 글
다이나믹 프로그래밍 알고리즘 C++ / Java / 파이썬 점화식 (0) | 2023.01.19 |
---|---|
문자 카운팅 알고리즘 C++ / Java / 파이썬 대소문자 변환 (0) | 2023.01.19 |
최소, 최대 값 찾는 가장 빠른 알고리즘 C++ / Java / 파이썬 (0) | 2023.01.13 |
숫자 카운팅 알고리즘 C++ / Java / 파이썬 시간복잡도 (0) | 2023.01.13 |
C++ / Java / 파이썬 빠른 입출력 알고리즘 대회 (0) | 2023.01.11 |