본문 바로가기

알고리즘/[프로그래머스]Lv.0

[프로그래머스]Lv0.자릿수 더하기

본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+  Java언어 내용도 포함되어있습니다. )

 

https://school.programmers.co.kr/learn/courses/30/lessons/12931

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

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

 

[C++] vector container 정리 및 사용법

안녕하세요.  BlockDMask 입니다. 오늘은 C++ STL의 sequence container 중에 정말 자주 쓰는 vector에 대해서 알아보겠습니다. <목차> 1) vector container 란? 2) vector의 사용 3) vector의 생성자와 연산..

blockdmask.tistory.com

 

5_2) 동적 메모리 할당