PS/백준

백준 / String(문자열) / 11720번 / 숫자의 합 / C++

KimMinJun 2020. 5. 26. 15:02

문제

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

입력

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

출력

입력으로 주어진 숫자 N개의 합을 출력한다.

 

 

<C++> 2020/05/26

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

int main() {
	int n;
	cin >> n;

	string str;
	cin >> str;

	int result = 0;

	for(int i=0; i<n; i++) {
		result += str[i] - '0';
	}

	cout << result << endl;
}

처음에 str[i] - '0' 부분에서 애를 먹었다.

str에 숫자를 받는다 한들, string으로 저장된다는 거를 잊고있었다.

그래서 숫자로 변환하기 위해 숫자0이 아닌 문자'0'을 빼주면, 숫자로 된다. (아스키코드 연산)

아마 이문제는 이게 키포인트가 아닌가싶다.


<JS> 2022/04/28

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt';
const input = fs.readFileSync(filePath).toString().split('\n');

const [N, inputTestCase] = input;

function solution(N, inputTestCase) {
  let sum = 0;
  inputTestCase.split('').map(item => {
    sum += Number(item);
  });

  console.log(sum);
}

solution(N, inputTestCase);

들어온 입력을 N과 문자열로 나눠준다.

문자열을 split('')을 이용해 하나하나 나누어 배열에 저장해주고, map을 통해 모든 값을 sum에 더해준다.