티스토리 뷰
it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비 - 인프런 | 강의
모든 문제에 대한 저작권은 위 강의에 있습니다.
문제
N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 int digit_sum(int x)를 꼭 작성해서 프로그래밍 하세요.
입력 설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다. 각 자연수의 크기는 10,000,000를 넘지 않는다.
출력 설명
자릿수의 합이 최대인 자연수를 출력한다. 자리수의 합이 최대인 자연수가 여러개인 경우 그 중 값이 가장 큰 값을 출력합니다.
입력 예제 1
5
125 15232 79 1325 97
출력 예제 1
97
제출 코드
2023년 2월 1일
#include <iostream>
#include <vector>
using namespace std;
int digit_sum(int x)
{
int sum = 0;
while (x > 0)
{
sum += x % 10;
x /= 10;
}
sum += x % 10;
return sum;
}
int main()
{
int N = 0;
cin >> N;
int arr[101] = {};
int max = 0;
int maxCount = 0;
for (int i = 0; i < N; i++)
{
cin >> arr[i];
int temp = digit_sum(arr[i]);
if (temp > max)
{
max = temp;
maxCount = i;
}
else if (temp == max)
{
if(arr[maxCount] < arr[i])
maxCount = i;
}
}
cout << arr[maxCount];
return 0;
}
풀이
함수를 만들어 푸는 문제였다. 프로그래머스에서 자주 출제되었던 문제 유형이라 크게 어렵지 않았다. 각 자릿수의 값을 더할 때에는 변수 2개를 사용하면 된다.
예를 들어 124라는 숫자의 각 자릿수 합을 구한다고 가정해보자.
10 나머지 값인 4를 저장 → 10으로 나누기 (= 12) → 다시 10 나머지 값인 2 저장 → 10으로 나누기 (= 1) → 반복문 탈출해서 나머지값 1 합산 ⇒ 4 + 2 + 1
마지막에 한 번 더 나머지 값을 더하는 이유는 마지막으로 10을 나눴을 때 1이 남는데 반복문만 통해서 합산을 하면 1은 더해지지 않은 채로 반복문이 끝나기 때문이다.
'😈 알고리즘 > 🍃 인프런 #1' 카테고리의 다른 글
🙏 12. 숫자의 총 개수(large) (0) | 2023.02.25 |
---|---|
🙏 11. 숫자의 총 개수(small) (0) | 2023.02.24 |
🙏 문제 푼 개수 (0) | 2023.02.22 |
🙏 30, 31번 문제 (0) | 2023.02.21 |
🙏 27, 28, 29번 문제 (0) | 2023.02.20 |
댓글