[백준 11720 node.js] 숫자의 합

Jessie H·2022년 6월 27일
0

알고리즘 공부

목록 보기
14/20
post-thumbnail

백준 11720 숫자의 합

백준 11720 숫자의 합 문제 링크

첫째줄에는 입력받은 수의 자릿수, 둘째줄에는 입력받은 수가 온다.
둘째줄에 입력받은 수의 각 자리를 더한 값을 출력하라는 문제이다.

풀이

for문으로도 풀 수 있지만 reduce 연습을 위해 reduce로만 정리!!
어제 밤에 풀었을 때는 reduce를 쓰는 거에만 급급해서 result 하나에 결과를 몰아넣고 출력하는 방식으로 도전했다.

<script>
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
//trim()을 통해 공백 없애기, split('\n')을 통해 여러 값을 줄바꿈해서 입력받는다

const num = input[1].split('');
//input[1]은 두번째 줄에 입력받은 값, 각 자리를 split('')를 통해 분리한 것을 담아 배열로 반환 -> split('')을 사용했기 때문에 input[1]은 string이다.
//ex) input[1] = '12345'일 경우, num = ['1','2','3','4','5'];가 된다

const result = num.reduce((accumulator, currentNum) => accumulator += Number(currentNum), 0);
//reduce의 accumulator의 초기값은 0으로 설정
//num 내의 데이터는 현재 split('')으로 인해 문자열이 됐기 때문에 Number(currentNum)으로 누적되도록 한다.
//accumulator에 누적값을 저장시켜 num 내의 데이터 currentNum을 모두 더한 값을 구한다.

console.log(result);//result 출력
</script>

오늘 블로그에 다시 풀이를 정리하면서 오늘 배운 IIFE를 사용해서도 이 문제를 풀 수 있지 않을까 싶어서 여러번 도전하다가 마침내 성공했다!!

<script>
(function() {
	const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
	//공백 제거를 위해 trim() 사용
	//여러 개의 입력값을 두 줄에 걸쳐 받기 때문에 split('\n')을 해준다

	const num = input[1].split('');
    //input의 두번째 값의 숫자 하나하나를 분리해서 배열에 담음
    
	const result = num.reduce((accumulator, currentNum) => {
    	return accmulator += Number(currentNum)
    }, 0);
    
    return console.log(result);
})();
</script>

IIFE로 풀면 두번째 입력값을 보호할 수 있어서 좀 더 좋지 않을까?하는 개인적인 생각...ㅎㅎㅎ
메모리랑 실행 시간은 일단 차이가 없었다.
다른 문제에서도 IIFE를 또 활용해 봐야겠다.

profile
코딩 공부 기록장

0개의 댓글