CODETEST

[프로그래머스] 자릿수 더하기

wooodii 2022. 9. 15. 10:04

문제)

자연수 N이 주어지면, N의 각 자리수 합을 구해 return하는 solution함수를 만들어 주세요.

N =123이면 1+2+3 =6을 return하면 됩니다.

 

풀이1) 

자연수의 각 자릿수를 더해야 할 경우,

자연수는 일반적인 형태로 다루는 것이 아니라 문자열 인덱스로 변환해 나누기

>  다시 자연수처럼 변환해 더하는 것을 실행

1. 받은 자연수를 문자열로 바꿈  2. 문자열 인덱스를 탐색해 문자열로 쪼갠 다음, 다시 자연수를 변환해 더함

function solution(n) {
	let answer = 0
    n = n.toString() 
    // toString()을 통해 문자열로 변경
    
    for (let i =0; i<n.lengt; i++){
    	answer += parseInt(n[i])
        // 문자열의 각 인덱스 값은 parseInt를 이용해 파싱하여 정수로 반환
        }
        return answer; 
  }

 

풀이 2)  

function solution(n) {
	return(n+"").split("")/reduce((acc,curr) => acc + parseInt((curr), 0)
    }
    // return(n+"")
    // 피연산자 중 1개가 문자열이면 문자열로 타입 변환
    // n+"" = 숫자+ 문자열의 형태이기 때문에 문자열 n을 반환
    // Strig(n)과 동일한 역할

1) 숫자를 문자열로 바꾸기 위해서 이항 연산자 +를 활용 

2) 자바스크립트에서 +(이항 연산자) 는 문자열을 연결하는 기능을 가짐

3) 피연산자가 문자열 일 때, 문자열을 연결하는데, 어느 하나가 아니라면 문자열로 형변환을 함 

4) 문제에서 n+" " n은 숫자, ""은 빈 문자열 > 문자열이 아닌 n을 문자열로 형변환 > 문자열 n

* 숫자형 > 문자형 > 배열로 변환한 이후에, `reduce`를 이용해서 return 사용함 

 

 

 

 

728x90