38. C++ 백준 15596 번 정수 N개의 합. C++ 함수 선언. C++ vector
안녕하세요! 코딩하는 덕구입니다!
함수에 대한 개념부터 설명드리겠습니다!
수학에서는 어떤 값이 다른 값으로 사상되는것이 함수죠. (input -> output)
프로그래밍에서의 함수는 내부적으로 동작만 하고 출력이 없을수도 있습니다!
어쨌든 프로그래밍에서 특정 동작을 하도록 만든 덩어리를 함수라고 합니다!
우리는 이 덩어리(함수)를 만들기 위해 입력 형식, 출력 형식, 동작을 선언해 줍니다.
그리고 저희가 쓰고싶을 때 실행시키면 됩니다!
C++ 백준 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
먼저 이 문제는 함수만 작성하면 됩니다!
#include <vector>
using namespace std;
long long sum(vector<int> &a) {
long long ans = 0;
for(int i = 0; i<a.size(); i++)
ans = ans + a[i];
return ans;
}
제 코드입니다!
#include <vector>
using namespace std;
long long sum(vector<int> &a) {
long long ans = 0;
return ans;
}
기본적으로 이렇게 시작되어있는데 이게 함수의 형태입니다!
#include<vector> 를 통해 vector STL (표준라이브러리)에 접근하고
자료형 함수이름(입력 값){
동작
return 출력값;
}
함수는 위의 형태를 가집니다.
먼저 자료형을 선언하고, 함수도 자료형이 있습니다! (변수와 마찬가지)
변수명 지정해 주는 것 처럼 함수명을 지정해주고
괄호 열고 입력 형식을 넣어주면 됩니다!
동작을 위한 명령문들 이후에 연산이 끝나면 (함수의 작동이 끝나면)
함수는 return 을 이용해 출력하게 되는데 이때 처음에 선언한 함수의 자료형과
출력값의 자료형이 같아야 됩니다! (다르면 선언 자체가 안됨)
예를 들어
int function(){
int b;
return b;
} //return이 int 형, 함수가 int 형이므로 선언 가능
위 함수는 선언이 가능하지만
long long function(){
int b;
return b;
} // 함수가 long long 형, return이 int 형이라 선언이 불가능
참고로 함수는 입력이나 출력이 없어도 선언 가능합니다.
단 출력이 없을때는 함수의 자료형을 void 로 지정해줘야 됩니다.
void fuction(){
//do something
}
이렇게요!
또 vector의 개념이 나왔는데 배열이랑 개념이 같다고 생각하시면 됩니다!
차이점은 무한대로 vector의 크기를 프로그램 실행 도중 바꿀수 있다는 것과 (배열은 안됨)
배열보다 조금 더 느리다는것 입니다!
크기를 무한대로 늘릴 수 있으니 처음에 생성할때 size를 지정하지 않고 생성할 수 있습니다!
vector는
vector<자료형> 변수명 의 형식으로 생성합니다!
예를들어 vector<int> a 이런식으로요!
또한 vector는 여러가지 기능을 지원하는데 그중 하나가
vector.size() 입니다!
vector 로 생성된 변수명 옆에 .size()를 붙이면 사용 가능 합니다!
a.size() 이렇게요!
그러면 현재 벡터 a의 크기값이 됩니다.
#include <vector>
using namespace std;
long long sum(vector<int> &a) {
long long ans = 0;
for(int i = 0; i<a.size(); i++)
ans = ans + a[i];
return ans;
}
본론으로 돌아가서 vector를 사용하기 위해
#include <vector> 를 하였고
long long 타입의 함수 sum을 선언
함수의 입력값으로는 vector타입의 주소를 받고 (&연산자는 어떤 객체의 주소를 가져옵니다.)
(외부에 선언되어 있는 vector a에 접근하기위해 주소를 받았습니다! )
연산으로는 for 문을 이용해서 a[i]로 vector의 성분을 처음부터 끝까지 더해 ans 변수에 넣어주고
(vector의 성분 접근은 배열처럼 할 수 있습니다!)
출력은 return 을 이용해 ans를 내보내줘서
변수들의 합을 출력하는 함수인 sum을 만드는 문제를 풀어보았습니다!
사실 함수를 사용하진 않아서 복잡하게 느끼실 수 있습니다!
선언만 하는 문제였기 때문이죠!
이 포스트에서는 vector의 개념과
어떤 자료형의 어떤 동작을 함수를 선언했구나를 코드만 보고 알 수 있을 정도로만 익히시면 됩니다!
함수의 사용은 앞으로 나오는 문제에서 나오면 다시 더 설명해드리겠습니다!
C++ 함수를 선언하는 문제인 C++ 15596 번과 vector에 대한 간단한 설명이었습니다!
감사합니다!