티스토리 뷰

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
«   2025/07   »
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
링크
Total
Today
Yesterday