[210308][백준/BOJ] 8595번 히든넘버

KeonWoo Kim·2021년 3월 8일
0

알고리즘

목록 보기
14/84

문제

입출력


풀이

입력받은 문자열에서 숫자를 찾고 이 숫자들의 합을 구하는 문제이다.

단어의 길이가 1부터 5백만 사이이므로 크기가 50000001인 str을 전역변수로 정의한다.
또한 int형의 범위를 초과하므로 결과값을 구하는데 필요한 sum과 결과값을 나타내는 res변수의 자료형은 long long형으로 정의한다.

반복문을 돌면서 숫자라면

sum = sum*10 + str[i] - 48;

코드를 실행시킨다.

숫자가 아니라면

res+=sum; 

을 통해 결과값에 sum을 더하고 sum을 0으로 초기화 시켜준다.

모든 문자가 다 숫자인 경우가 존재할 경우에는 sum을 res에 더할 수 없는 문제가 발생하므로 반복문이 끝난 후에

res+=sum; 

을 통해 해결하면 된다.

코드

#include <bits/stdc++.h>
using namespace std;

char str[5000001]; 

int main()
{
	int n;
	long long sum=0, res=0; 

	scanf("%d", &n);
	scanf("%s", &str);
	
	for(int i=0;i<n;i++)
	{ 
		if(str[i] >= 48 && str[i] <= 57) 
		{
			sum=sum*10+str[i]-48; // 0*10 + 1, 1*10+3			
		}	
		else
		{
			res+=sum;
			sum=0;	
		}
	}	
	res+=sum; 
	printf("%lld\n", res);
}
profile
안녕하세요

0개의 댓글

관련 채용 정보