Coding/Step By Step

Baekjoon Training / Algorithm(math) / vector / #11720

빈그레 2023. 2. 5. 23:41

 

 


#11720

 

 

 

 

 

 

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <vector>
using namespace std;

int main() {
	//입력 받을 숫자의 개수
	int sumCount; //sum.size()
	cin >> sumCount;

	//입력값 하나씩 저장
	vector<int> addnum(sumCount);
	int sum = 0;

	for (int i = 0; i < sumCount;i++) {
		scanf("%1d", &addnum[i]); //vector 원하는 위치에 값 넣기
		sum += addnum[i];
	}

	cout << sum;
	
}

 

 

 

vector 사용 이유

 

처음엔, 입력 받은 값들을 array에 저장하려 하였으나, 입력 받을 정수의 개수가 user로부터 값을 받아야 알 수 있으므로, 변수 상태인 sumCount로는 array을 생성할 수 없었다. 이에,  초기에 상수 크기값을 입력하지 않아도 되는 vector에 cin으로 받은 입력값들을 for문을 통해 저장하도록 하였다.

 

 

 

scanf 오류

 

scanf를 활용한 곳에 오류가 생겨 #define _CRT_SECURE_NO_WARNINGS를 추가해주었다.

C6031오류는 함수 scanf의 반환값을 어딘가에 대입하거나 사용하지 않아서 발생하는 경고이다. 

단순히 버려지는 값이 있음을 알리기 위해 안내되는 내용이므로 추가로 코드를 수정하지 않았다.

 

 

 

cin과 scanf의 차이

 

[ cin ]

- 문자,문자열 등 다양한 데이터 형을 서식문자 없이 변수형에 맞게 자동으로 입력 가능

- 키보드로 입력한 값을 저장할 변수가 받아들이는 형태로 바꿔서 저장

 

 

[ scanf ]

- whitespace를 cin은 문자 받을 때 무시하고 저장, scanf는 whitespacd도 저장

- scanf,printf의 속도가 cin보다 더 빠름( 알고리즘 문제시 입출력 속도 차이로 통과여부가 갈리기도)

 

 

 

추가 공부

 

scanf 사용 없이 '공백 없는 입력값'을 저장하는 법 공부하기!