반응형

 

 

 

문자열로 바꿔서 풀려다가 char를 정수형으로 바꾸는 atoi 사용법을 까먹어서

입력받은 숫자를 10으로 나눈 몫과 나머지를 반복사용해서 풀고싶었는데

이 방식은 입력받는 수의 범위때문인지 답이없어서 그냥 문자열을 int형변환 하는법을 다시 검색해서 수정함

 

 

스택오버플로우는 언제나 좋은 친구

 

간단한 문자-정수 형변환

아스키코드의 숫자는 48부터 시작하여 int로 형변환 후 48을 빼주어야 정확한 값을 얻을수있다

(아스키에서는 0=48이란 소리)

 

다른 방법으로는 문자 자체에서 아예 48을 빼주는 방법이 있다

 

 

 

위의 방법을 이용하여

두번째에 입력받은 수인 input을 아예 string으로 입력받은 다음 하나하나 정수로 바꿔서 더했다

 

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

int main() {
	int cnt;
	string input;
	
	cin >>cnt;
	cin >> input;
	
	int ans=0;
	char c;
	int tmp;
	for(int i=0; i<cnt; i++){
		c= input[i];
		tmp =(int)c-48;
		ans+=tmp;
	}
	cout << ans;
	return 0;
}

 

 

문자열 대신 char형 배열을 이용한 다른 방법

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

int main() {
	int cnt;
	char c[101];
	cin >>cnt;
	
	int ans=0;
	
	for(int i=0; i<cnt; i++){
		cin >> c[i];
		ans+=(int)c[i]-48;
	}
	
	cout << ans;
	return 0;
}

 

 

출처 : www.acmicpc.net/problem/11720

 

11720번: 숫자의 합

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

www.acmicpc.net

참고사이트 : stackoverflow.com/questions/5029840/convert-char-to-int-in-c-and-c

 

Convert char to int in C and C++

How do I convert a char to an int in C and C++?

stackoverflow.com

 

반응형

+ Recent posts