meong_j
기록하는 습관.
meong_j
전체 방문자
오늘
어제
  • 분류 전체보기 (176)
    • 개인 공부 정리 (0)
    • 서버 운영 (37)
      • Linux (36)
    • Frontend (11)
      • Vue.js (10)
    • Backend (70)
      • Java (4)
      • Python (22)
      • Django (38)
      • Spring (6)
    • Database (5)
      • Oracle (4)
      • MySQL (1)
      • MariaDB (0)
    • Android (14)
      • Kotlin (6)
    • 배포 (9)
      • Docker (8)
      • AWS (1)
    • IT_study (29)
      • Coding test (17)
      • 알고리즘 (5)
      • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

인기 글

반응형

태그

  • SASS Variables
  • 중첩라우트
  • 리눅스인증
  • 테크커리어
  • docker
  • Proxy
  • gabagecollecter
  • dockersecret
  • 리눅스방화벽
  • router-link
  • cpu사용률
  • 개발자도서
  • DHCP
  • django
  • 이차원배열정렬
  • 배포인프라
  • 안드로이드adaptor
  • 코틀린자료형
  • dp #알고리즘
  • Kotlin

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
meong_j

기록하는 습관.

IT_study/Coding test

[Coding test Basic with c++] 자릿수의 합

2021. 12. 21. 20:45
728x90
반응형

문제

N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요.
각 자연수의 자릿수의 합을 구하는 함수를 int digit_sum(int x)를 꼭 작성해서 프로그래밍 하세요.

▣ 입력설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.
각 자연수의 크기는 10,000,000를 넘지 않는다.

▣ 출력설명
자릿수의 합이 최대인 자연수를 출력한다.
자리수의 합이 최대인 자연수가 여러개인 경우 그 중 값이 가장 큰 값을 출력합니다.

 

입력 예제

5
125 15232 79 1325 97

 

출력 예제

97

 

풀이

#include<stdio.h>
using namespace std;


int digit_sum(int x){
	
	int sum=0,tmp;
	
	while(x>0){
		tmp=x%10;
		sum+=tmp;
		x=x/10;
	}
	
	return sum;
}


int main(){
	// 자릿수의 합 
	int n, num, i, sum, max=-2147000000, res;
	scanf("%d",&n);
	 
	 for(i=0 ; a < n ; i++){
	 	scanf("%d", &num);
	 	sum = digit_sum(num);
	 	
	 	if(sum > max) {
	 		max=sum;
			res=num;
		}
	 	else if(sum==max){
	 		if(num > res) res=num;
		} 
		
		printf("%d\n",res);
	 }
	 
	 
   	return 0;
    
}

각 n개의 자연수 개수만큼 digit_sum 함수를 실행시킨다. 각 자연수의 자릿수 구하기 위해 자연수 x를 10으로 나누어 떨어진 나머지 값은 자연수의 맨 끝값이 되니 tmp에 저장하고 sum에 더해준다.

x값은 10으로 나눈 값으로 셋팅하면 맨 끝값을 뺀 나머지 자릿수로 저장되어 진다. 다시 x값을 10으로 나눈 나머지를 tmp에 저장하고 sum에 더해준다.. 이렇게 x값이 0이 될때 까지 반복하면 자연수의 자릿수를 모두 더한 값 sum을 구할 수 있다.

n % 10 = n의 맨 끝 자릿수
n / 10  = n의 맨 끝 자릿수를 뺀 나머지 자릿수

가장 큰 값은 int형 중 가장 작은 값인 -2174000000 값과 비교해서 더 크면 max로 셋팅한다. 이렇게 sum을 비교하여 max를 저장하고, 원래 자연수값은 num에 저장한다.

sum이 같을 경우 원래 자연수 값 num을 비교하면 되니 자릿수의 합이 가장 큰 값을 구할 수 있다.

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'IT_study > Coding test' 카테고리의 다른 글

[Coding test Basic with c++] N!의 표현법  (0) 2021.12.27
[Coding test Basic with c++] Anagram(아나그램 : 구글 인터뷰 문제)  (0) 2021.12.25
[Coding test Basic with c++] 모두의 약수  (0) 2021.12.21
[Coding test Basic with c++] 올바른 괄호  (0) 2021.12.16
[Coding test Basic with c++] 영어단어 복구  (0) 2021.12.16
    'IT_study/Coding test' 카테고리의 다른 글
    • [Coding test Basic with c++] N!의 표현법
    • [Coding test Basic with c++] Anagram(아나그램 : 구글 인터뷰 문제)
    • [Coding test Basic with c++] 모두의 약수
    • [Coding test Basic with c++] 올바른 괄호
    meong_j
    meong_j
    #it #개발일기 #개발공부 #개발자 #백앤드 #생각정리 #시간은 실력에 비례한다 #뭐든지 꾸준히 열심히 #오늘의 내가 내일의 나를 만든다

    티스토리툴바