본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+ Java언어 내용도 포함되어있습니다. )
https://school.programmers.co.kr/learn/courses/30/lessons/12931
1.문제설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
2. 문제해결 접근
- 각자릿수의 합을 구하는 변수를 선언한다.
- 반복문을 통해 N을 나머지 연산을 반복수행하여 각자릿수의 숫자를 뽑아낸다
3.답안 : [언어 : java ]
import java.util.*;
public class Solution {
public int solution(int n) {
int answer = 0;
int sum = 0;
while(n != 0){
sum += n%10;
n = n/10;
}
answer= sum;
return answer;
}
}
4. C++ 답안
동일한 로직의 C++문법 코드
#include <iostream>
using namespace std;
int solution(int s)
{
int sum = 0;
while (1)
{
if (s < 10)
return sum + s;
sum += s % 10;
s = s / 10;
}
return sum;
}
vector를 이용한 풀이
#include <iostream>
#include <vector>
using namespace std;
int solution(int n)
{
int answer = 0;
// vector를 선언한다. int 자료형으로 arr 변수명으로 초기화 한다.
vector<int> arr;
// 모든 자릿수의 합이지만 10미만의 수는 n이 합이된다.
if(n < 10) return n;
else
{
while(n > 0)
{
// vector의 함수, push_back을 이용하면, vector의 맨뒤에 값을 하나 추가한다.
arr.push_back(n % 10);
// n의 자릿수를 조정한다._10으로 나누어 한 자릿수를 버린다.
n = n / 10;
}
}
// vector의 크기를 변수에 담는다.
int size = arr.size();
// 반복문을 이용해 vector에 저장되어있는 값들을 모두 더한다.
for(int i = 0 ; i < size; i++)
{
answer += arr[i];
}
return answer;
}
int main(){
solution(1234);
std::cout<< solution(1234);
return 0;
}
5. C++ 문법 설명과 표현법
5_1) Vector 관련 함수 정리
- vector<int> v; - 비어있는 vector v를 생성
- vector<int> v(5); - 기본값이 (0)으로 초기화 된 5개의 원소를 가지는 vector v를 생성한다.
- vector<int> v(5,2); - 2로 초기화된 5개의 원소를 가지는 vector v를 생성한다.
- vector<int> v2(v1) - v1을 복사한 vector v2를 생성한다,
- push_back(6) - 마지막 원소 뒤에 원소 6을 삽입
- pop_back() -마지막 원소를 제거한다
- size() - 원소의 갯수를 리턴
- empty() - vector가 비어있다면 리턴 true
https://blockdmask.tistory.com/70
5_2) 동적 메모리 할당
'알고리즘 > [프로그래머스]Lv.0' 카테고리의 다른 글
[프로그래머스]Lv0. 문자 반복 출력하기 (0) | 2022.10.31 |
---|---|
[프로그래머스]Lv0. 제곱수 판별하기 (0) | 2022.10.28 |
[프로그래머스]Lv0. 약수의 합 (0) | 2022.10.25 |
[프로그래머스]Lv0. 평균 구하기 (0) | 2022.10.25 |
[프로그래머스]Lv0. 숫자 비교하기 (0) | 2022.10.25 |