안녕하세요
[node.js] 2775 부녀회장이 될테야 (자바스크립트) 2차원 배열 기본 수학 단계 본문
문제를 해결하기 위해 스스로 충분한 이해가 필요할 것 같아 별도로 글을 작성합니다.
문제를 보자마자 필요한 열쇠는 배열이라 생각했습니다.
분명히 배열을 만들면 쉽게 해결이 될 것 같은데, 배열을 혼자서 아무리 만들어 보려고 해도 실패했습니다.
그렇다고 해서 답을 보기는 싫었기 때문에 유튜브에 자바스크립트 2차원 배열을 검색해보았습니다.
https://www.youtube.com/watch?v=tMeDkp1J2OM
아주 친절한 영상을 발견했습니다. 쉽고 간단하게 2차원 배열을 만드는 방법이 무려 4가지나 있습니다.
첫 번째 방법이 직관적이기 때문에 첫 번째 방법을 이용했습니다.
우선 rows를 생성합니다.
array의[i]번째 인덱스에 []를 5개 추가합니다.
2775 부녀회장이 될테야
“a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다”
주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.
아래와 같이 첫줄에 T를 이후로 k, n ,k ,n 을 번갈아 입력받습니다.
2
1
3
2
3
결과
6
10
제출한 답
const input = require("fs").readFileSync("dev/stdin").toString().split("\n").map((x) => x.trim());
let array = [];
for (i = 0; i < input[0]; i++) {
let count = 0;
let columns = input[2 * i + 1];
let rows = input[2 * i + 2];
for (j = 0; j <= columns; j++) {
array[j] = [];
for (l = 0; l < rows; l++) {
if (j == 0) {
count++;
array[j][l] = count;
}
if (j >= 1) {
if (l == 0) {
array[j][l] = 1;
} else {
array[j][l] = array[j - 1][l] + array[j][l - 1];
}
}
}
}
console.log(array[columns].slice(-1)[0]);
}
코드 설명
- 배열 만드는 방법에 따라 r,c을 집어넣습니다.
- if (j == 0) {
0층의 경우에는 1,2,3,4,5,... 1씩 증가하는 수열이므로 별도로 처리합니다. - if (j >= 1) {
if (l == 0) {
array[j][l] = 1;
1호의 모든 층은 1입니다. - } else {
array[j][l] = array[j - 1][l] + array[j][l - 1];
나머지 호의 규칙은 (바로 아랫층 호실의 인원)과 (바로 이전 호실의 인원)을 합한 값입니다.
'백준 자바스크립트' 카테고리의 다른 글
[node.js] 2839 설탕배달 (자바스크립트) 기본수학단계1 (0) | 2022.06.04 |
---|---|
[node.js] 1110 더하기 사이클 (자바스크립트) 문자열 단계 (0) | 2022.05.31 |
[node.js] 기본 수학 단계 (자바스크립트) 1712 ~ (0) | 2022.05.12 |
[node.js] 문자열 단계 (자바스크립트) 11654 ~ (0) | 2022.05.10 |
[node.js] 함수 단계 (자바스크립트) 4673 ~ (0) | 2022.05.08 |