[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)
      • ---- 개발 컨텐츠 ---- (0)
      • iOS (30)
        • Swift 문법 (1)
        • iOS 개념 (12)
        • HIG (5)
        • SwiftUI (7)
        • UIKit (4)
      • Side Project (0)
      • 개발서적 (4)
        • 객체지향 사실과 오해 (4)
      • 알고리즘 (74)
        • 자료구조 개념 (2)
        • Swift (25)
        • 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)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바