티스토리 뷰

#include <stdio.h>

int main(void)
{
	int t = 0;
	scanf("%d", &t); //정수는 t에 들어가고, \n은 buffer에 남음
	getchar(); //buffer '\n'제거
	    while(t--)
        {
	    char tmp = 0;
	    tmp = getchar(); //문자열로 입력받음
	    int sum = 0;
	    int a = 0;
	    int count = 0;
	
	    while(1==1)
        {
		    if(tmp == '\n') { //\n이면 종료
			    sum += a; //그전까지의 부분합 누적
			    break;
		    } 
		    if(tmp == ' ') { //space이면 
			    sum += a; //그전까지의 부분합 누적
			    count = -1; //자릿수 초기화
			    a = 0; //누적합 초기화
		    }
		    if(count == 0) a = tmp-48; //일의 자리
		    else { //십의 자리 이상
			    a *= 10; 기존의 부분합에 10을 곱하고,
			    a += tmp-48; 일의자리를 더함
		    }
		    count++;
		    tmp = getchar(); //buffer값에 있는 것을 tmp에 대입
	    }
	printf("%d\n", sum); //총합출력
    }
	return 0;	
}

 

풀이 : 한 줄 한 줄마다 \n으로 끝이 난다.

한 줄 한 줄, 문자열로 받은 뒤, 이를 정수로 바꿔준 다음 더한다.

 

getchar() : 문자로 키보드 버퍼에 입력받는다. 그리고 버퍼에서의 맨 처음 걸 가져온다.

만약 버퍼에 문자들이 있다면, 또 문자를 입력받은 것이 아닌, 버퍼에 있는 나머지 맨 처음의 것을 가져온다.

 

https://www.acmicpc.net/problem/11024

 

11024번: 더하기 4

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, N(1 ≤ N ≤ 100)개의 수가 공백으로 구분되어서 주어진다. 입력으로 주어지는 수는 10,000보다 작거나

www.acmicpc.net

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함