본문 바로가기
Algorithm/Baekjoon

백준 11720번

by minhi 2024. 11. 8.

백준 11720번을 풀어보았다.

let [N, input] = require('fs').readFileSync('/dev/stdin').toString().split('\n')

N = Number(N)

let sum = 0

for (let i = 0; i < N; i++) {
  sum += Number(input[i])
}

console.log(sum)

 

JavaScript는 상당부분 문자열을 배열처럼 처리할 수 있다.*

 

배열의 특정 요소에 인덱스를 통해 접근하듯이, 문자열의 특정 문자에 인덱스를 통해 접근할 수 있고 이를 활용해 풀이하였다.

 

* 참고) 반복문 ① 배열

더보기

위 풀이와 관련하여 하나만 덧붙이자면, 문자 자료형인 input[i]를 숫자 자료형으로 변환하는 방법으로는 다음의 두 가지가 있다.

  • Number(input[i])
  • +input[i]

하지만 위 풀이와 달리, 아예 문자열을 배열로 변환하여 풀이할 수도 있다.

 

1. Array 객체의 from 메소드

let [N, input] = require('fs').readFileSync('/dev/stdin').toString().split('\n')

N = Number(N)

let sum = 0

const number = Array.from(input, (element) => Number(element))

for (let i = 0; i < N; i++) {
  sum += number[i]
}

console.log(sum)

 

Array 객체의 from 메소드는 순회 가능 또는 유사 배열 객체에서 얕게 복사된 새로운 Array 인스턴스를 생성한다.

Array.from(arrayLike[, mapFn, thisArg])
  • arrayLike: 배열로 변환할 순회 가능 또는 유사 배열 객체
  • mapFn: 배열의 모든 요소에 대해 호출할 함수
    • mapFn은 다음의 인수를 사용하여 호출된다.
    • element: 현재 처리 중인 요소
    • index: 현재 처리 중인 요소의 인덱스
  • thisArg: mapFn 실행 시 this로 사용할 값

* 순회 가능 또는 유사 배열 객체로는 String, Set, Map, NodeList 등이 있다.

 

2. String 객체의 split 메소드

let [N, input] = require('fs').readFileSync('/dev/stdin').toString().split('\n')

N = Number(N)

let sum = 0

const number = input.split("").map(Number)

for (let i = 0; i < N; i++) {
  sum += number[i]
}

console.log(sum)

 

split() 메소드의 인수로 공백("")을 전달하면 문자열의 각 문자를 요소로 가지는 배열을 생성할 수 있다.

 

3. Array 객체의 reduce 메소드

let [N, input] = require('fs').readFileSync('/dev/stdin').toString().split('\n')

N = Number(N)

let sum = 0

const number = input.split("").map(Number)

sum = number.reduce((accumulator, currentValue) => accumulator += Number(currentValue), 0)

console.log(sum)


앞선 풀이들은 문자열을 배열로 변환한 뒤 반복문을 사용해 sum을 구한 반면,

 

문자열을 배열로 변환한 뒤 Array 객체의 reduce 메소드를 사용하면 보다 간단하게 sum을 구할 수 있다.

 

참고) 백준 1546번

 

💫 이 문제를 통해 배운 것

문자열을 배열로 변환할 때 split 메소드만 사용해왔는데 from 메소드도 사용할 수 있다는 것을 새로 알게 되었다.

'Algorithm > Baekjoon' 카테고리의 다른 글

백준 2675번  (0) 2024.11.08
백준 10809번  (0) 2024.11.08
백준 2743번, 9086번  (0) 2024.10.31
백준 1546번  (0) 2024.10.31
백준 10811번  (0) 2024.10.31