알고리즘/백준 알고리즘

11720 - 숫자의 합

TIM_0529 2022. 12. 24. 03:37
반응형
#include <iostream>
#include <string>
using namespace std;

int main()
{
	int size;
	string num;
	cin >> size;
	cin >> num;
	int answer = 0;
	for (int i = 0; i < num.size(); i++)
	{
		answer += num[i] - '0';
	}
	cout << answer << endl;
}
2024의 메모리를 차지하는 코드이다.

하지만 다른사람의 코드를 보면

#import <cstdio>
int n,a,sum;
main(){
	scanf("%d",&n);
    while(n--)
    {
    	scanf("%1d",&a);
        sum+=a;
	}
    printf("%d",sum);
}

 

 

데이터 크기는 1112KB 이다.

2배 가까이 차이가 나기 때문에 나랑 다른게 무엇일까 고민하다가 문제가 무엇인지 찾았다.

일단 바뀐 코드는

#include <stdio.h>
//#include <iostream>
int main() {
	int t, n, sum = 0;
	scanf("%d", &t);
	while (t--) {
		scanf("%1d", &n);
		sum += n;
	}
	printf("%d", sum);
}

결정적인 차이는 cin을 사용 하느냐 마느냐에 차이이다. 

https://www.acmicpc.net/blog/view/56

 

입력 속도 비교

여러가지 언어와 입력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 첫째 줄에 정수의 개수 N (= 10,000,000), 둘째 줄부터 N개의 줄에 한 개의 자연수(10,000 이하)가 적힌 파일

www.acmicpc.net

그리고 iostrea 라이브러리 앞에 주석 처리를 했는데 사용하지 않고 헤더 파일을 불러 오는 것 만으로도 속도 차이가 난다는 것을 알 수 있었다.

반응형

'알고리즘 > 백준 알고리즘' 카테고리의 다른 글

2908 - 상수  (2) 2022.12.28
1157-단어공부 c++  (0) 2022.12.26
2675-문자열 반복  (0) 2022.12.25
10809-알파벳 찾기  (2) 2022.12.24
11654-아스키 코드  (0) 2022.12.24