일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스sql
- 다이나믹프로그래밍
- 자료구조
- 사칙연산
- SQL
- 프로그래머스
- 백준
- 브루트포스알고리즘
- 문자열
- Image Classification
- 해시를사용한집합과맵
- 논문구현
- 프로그래머스연습문제
- 구현
- 이분탐색
- 논문리뷰
- 정렬
- 그리디알고리즘
- 그리디
- MySQL
- 소수판정
- C++
- 정수론
- 프로그래머스코딩테스트
- 수학
- 이진탐색
- C언어
- C
- 백준알고리즘
- 큐
- Today
- Total
초보 개발자의 이야기, 릿허브
[C++] 프로그래머스 자릿수 더하기 본문
1. 문제이해
코딩테스트 연습 - 자릿수 더하기 | 프로그래머스 (programmers.co.kr)
주어진 자연수 N의 각 자릿수를 더해 리턴하는 알고리즘을 구현하는 것이 목표이다.
2. 문제풀이
N을 입력받아 각 자릿수의 합을 구하면 되는 문제이다.
예를 들어 534라는 수가 주어지면, 각 자릿수인 5, 3, 4를 더한 12를 리턴하면 된다.
여기서, 각 자리수를 어떻게 추출하여 더하는지가 문제인데,
처음 생각했던 방법은 입력받은 N을 문자열로 바꾸어 배열에 저장하고, 각 배열의 요소들을 더해주는 방법이었다.
하지만 이 방법은 시간이 오래걸리는 비효율적인 방법이라고 생각되어, 다른 방법을 생각해보았다.
최종적으로 코드에 적용한 방식은 나누기(/)와 나머지 연산자(%)를 사용한 방식이다.
예를 들어 287이라는 수가 주어졌을 때, 287 % 10 = 7로, 일의 자리의 숫자를 추출할 수 있다.
또한, 287 / 10 = 28로, 일의 자리 숫자를 제외한 나머지 자리 숫자를 구할 수 있게 된다. (십의자리가 일의자리, 백의자리가 십의자리가 된다.)
이러한 방식을 이용해, 나머지 연산자를 통해 주어진 수의 일의자리 숫자를 구한 다음,
나누기로 일의자리 숫자를 제외해주고,
이 숫자를 다시 나머지 연산자를 이용해 일의자리(원래는 십의자리)를 구하면 된다.
예시를 통해 다시 한번 보자.
1. 287 % 10 = 7로, 일의 자리 숫자 = 7
287 / 10 = 28
2. 28 % 10 = 8로, 십의 자리 숫자 = 8
28 / 10 = 2
3. 2 % 10 = 2로, 백의 자리 숫자 = 2
2 / 10 = 0
위와 같은 방식으로 각 자릿수를 구해 더해주어 리턴하는 방식을 선택했다.
문제의 주어진 틀은 다음과 같았다.
3. 소스코드
#include <iostream>
using namespace std;
int solution(int n)
{
int answer = 0;
while(n > 0){
answer += n % 10;
n = n / 10;
}
return answer;
}
주어진 틀에 위와 같이 소스코드를 구현했다.
n이 0보다 클 때만, 즉, 모든 자릿수를 다 구해 더할때까지 while 문을 실행하고,
n % 10으로 해당 수의 자릿수를 추출,
n/10으로 추출한 자릿수를 제외한 나머지 숫자를 다시 반환, 반복하는 형식으로 코드를 구현했다.
처음에 앞서 얘기한 방식인 문자열 변환 & 배열에 넣고 더하는 방식을 사용하려고 했다가
1단계인데 과연 이 방식으로 푸는게 맞는걸까.. 하고 급하게 방식을 전환했다..ㅎㅎ
위 방법으로 풀었다가는 시간이 배로 들었을것같다..
역시 코딩은 어떤 방식으로 구현하느냐가 제일 중요한것같다🙄
'코딩테스트 > 📘 프로그래머스 (programmers)' 카테고리의 다른 글
[C++] 프로그래머스 문자열을 정수로 바꾸기 (0) | 2021.08.17 |
---|---|
[C++] 프로그래머스 2016년 (0) | 2021.08.16 |
[C++] 프로그래머스 하샤드 수 (0) | 2021.08.14 |
[C] 프로그래머스 두 정수 사이의 합 (0) | 2021.08.12 |
[C++] 프로그래머스 문자열 내 p와 y의 개수 (0) | 2021.08.12 |