[level 1] 자릿수 더하기

2022. 1. 6. 11:01·알고리즘/JavaScript

문제

 

풀이 코드

function solution(n) {
  let arr = [];
  n = String(n);

  for (let i = 0; i < n.length; i++) {
    arr.push(n[i]);
  }
  return arr.reduce((sum, current) => sum + Number(current), 0);
}

 

풀이 과정

입력받은 n 은 Number 타입이기 때문에 우선 String 타입으로 강제 형변환을 수행했고,

for 문을 돌려 각 인덱스를 배열에 할당했다

 

그리고 해당 배열에 대해 reduce 함수를 이용하여 각 자리수를 더하는 방식으로 수행했다.

 

숫자들을 10으로 나누고 나머지구하고 등등.. 하는거보단 효율적으로 구현했지만 아무리 봐도

 

강제 형변환, for 구문, 문자열을 배열에 저장 등등.. 너무 비효율 적인 부분이 많은거 같아 다른사람의 코드를 보았다

 

다른사람의 풀이

// 다른 사람의 풀이 1
function solution(n){
    return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}

// 다른 사람의 풀이 2
function solution(n){
    return String(n).split('').reduce((a,c)=>a+c*1, 0);
}

split 과 reduce 를 적절히 조합하여 구현했다

 

아.. 어제부터 느끼는데 진짜 JS 의 기초 문법 문자열 함수, 배열 함수 등등을 많이 써보고 공부해 볼 필요가 있다

 

어떤함수 인지 아는데 생각이 안나는건.. 아직 많이 사용 안해봐서 for 문만 쓰게 되는거겠지

더 공부해야겠다

 

+) 문자열을 number로 변환하기 위해서는 문자에 연산을 수행하면 Number로 바뀐다 ( '4' * 1 = 4 )

Number형을 문자열로 변환하려면 빈문자 ''를 더하면 된다 ( 4 + '' = '4' )

 

이것도 중요한 팁이 될수 있다

'알고리즘/JavaScript' 카테고리의 다른 글
  • [level 1] 평균 구하기
  • [level 1] 자연수 뒤집어 배열로 만들기
  • [level 1] 행렬의 덧셈
  • [level 1] x만큼 간격이 있는 n개의 숫자
Jeohong
Jeohong
기억 보단 기록을
  • Jeohong
    Chikong Devlog
    Jeohong
  • 전체
    오늘
    어제
    • 분류 전체보기 (186) N
      • ---- 개발 컨텐츠 ---- (0)
      • iOS (30)
        • Swift 문법 (1)
        • iOS 개념 (12)
        • HIG (5)
        • SwiftUI (7)
        • UIKit (4)
      • Side Project (0)
      • 개발서적 (4)
        • 객체지향 사실과 오해 (4)
      • 알고리즘 (74) N
        • 자료구조 개념 (2)
        • Swift (25) N
        • JavaScript (47)
      • ---- 회고 계획 컨텐츠 ---- (0)
      • 계획 및 일기 (10)
      • 회고록 (1)
      • 컨퍼런스 탐방 (1)
      • 미드로 영린이 탈출하기 (1)
      • ---- Previous content ---- (0)
      • Frontend (2)
        • HTML & CSS (2)
      • KITRI 수업 (17)
        • 리눅스 (14)
        • 네트워크 (2)
      • 42seoul (17)
        • Bonr2code (9)
        • 넋두리 (7)
        • 멘토특강 (1)
      • 해킹 실습 (20)
        • 해커스쿨 - F.T.Z (19)
        • WebGoat (1)
      • Tensorflow로 시작하는 NLP (1)
        • 예제 (1)
      • 자연어처리 입문 (1)
        • 이론 (1)
      • 텐서플로로 배우는 딥러닝 (7)
        • 이론 (2)
        • 예제 (5)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    42seoul
    swift
    42서울
    본과정
    hig
    코딩
    라피신
    SwiftUI
    자료구조
    알고리즘
    스위프트
    개발자
    boj
    Algorithm
    1서클
    javascript
    네트워크
    프로그래머스
    IOS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Jeohong
[level 1] 자릿수 더하기
상단으로

티스토리툴바