Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- custom hook
- useEffect
- 피보나치 함수
- typescript
- Props Drilling
- interaction test
- suffixicon
- Python
- 백준
- ZOD
- javascript
- Github Actions
- locale data
- TextFormField
- React-hook-form
- React.memo
- storybook
- 프로그래머스
- 리팩토링
- context api
- useMemo
- 이메일 인증
- 사탕게임
- next-auth
- react
- Vanilla JavaScript
- visual test
- Flutter
- next.js
- kakao blind recruitment
Archives
- Today
- Total
Dev Diary
[프로그래머스] 자릿수 더하기 본문
SMALL
문제 이해하기
각 자릿수의 합을 구해야함으로 숫자 하나하나를 슬라이싱해야한다고 생각했다. 하지만 어떻게 슬라이싱 해야할지 방법이 떠오르지 않았다.
그래서 먼저 입력받은 값 n을 10으로 나눈 나머지를 answer 변수에 더하고 그 이후 계속 n / 10을 수행해 n의 자릿수를 줄여가며 계산을 수행했다.
n / 10을 해줌으로써 n의 변화: 123 -> 12 -> 1
function solution(n) {
var answer = 0;
while (n > 0) {
answer += n % 10
n = parseInt(n / 10)
}
return answer;
}
더 쉬운 풀이방법
문제를 풀기 전에 어떻게 슬라이싱할지 몰라서 사용하지 못했던 방법인데, 아래와 같은 방식으로 수행할 수 있다.
자바스크립트에는 덧셈 연산자를 사용하는 경우 피연산자중 어느 하나라도 문자열에 해당한다면 나머지 피연산자들도 문자열로 형변환 되어 결과적으로는 문자열을 반환한다는 특성을 가지고 있다. (혹은 String(n), n.toString()을 사용해도 동일하다.)
이런 특성을 이용하여 정수형 n을 문자열로 변환한다음 ""을 기준으로 split하여 각 요소를 합하면 쉽게 답을 구할 수 있다.
function solution(n) {
// 쉬운방법
return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}
LIST
'Algorithms' 카테고리의 다른 글
[백준] 10026 적록색약 (0) | 2023.05.25 |
---|---|
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 비밀지도 (0) | 2023.05.23 |
[프로그래머스] 달리기 경주 (0) | 2023.05.22 |
[백준] 1063 킹 (0) | 2023.05.21 |
[백준] 3085 사탕 게임 (1) | 2023.05.21 |