알고리즘 문제 풀이

38. C++ 백준 15596 번 정수 N개의 합. C++ 함수 선언. C++ vector

코딩하는 덕구 🐶 2022. 1. 24. 15:59
728x90
반응형

안녕하세요! 코딩하는 덕구입니다!

함수에 대한 개념부터 설명드리겠습니다!

수학에서는 어떤 값이 다른 값으로 사상되는것이 함수죠. (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에 대한 간단한 설명이었습니다!

감사합니다!

728x90
반응형