-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharray.js
More file actions
64 lines (57 loc) · 1.91 KB
/
array.js
File metadata and controls
64 lines (57 loc) · 1.91 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
월간 코드 챌린지 시즌3 [10월]
<문제 설명>
정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다.
n행 n열 크기의 비어있는 2차원 배열을 만듭니다.
i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다.
1행 1열부터 i행 i열까지의 영역 내의 모든 빈 칸을 숫자 i로 채웁니다.
1행, 2행, ..., n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다.
새로운 1차원 배열을 arr이라 할 때, arr[left], arr[left+1], ..., arr[right]만 남기고 나머지는 지웁니다.
정수 n, left, right가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요.
입출력 예시
n left right result
3 2 5 [3,2,2,3]
4 7 14 [4,3,3,3,4,4,4,4]
*/
// 20% 성공
const solution = (n, left, right) => {
return array(n).reduce((a, b) => a.concat(b)).slice(left, right+1);
};
const array = (n) => {
let arr = new Array(n);
if (n<0) {
return [];
}
for(let i=0; i<n; i++) {
arr[i] = new Array(n);
for (let l=0; l<n/2; l++) {
arr[i][l+Math.floor((n/2))] = (i !== n-1 ? l+1+Math.floor(n/2): n);
if (i !== l) {
arr[i][l] = i > l ? i+1 : l+1;
}
if (i === l) {
arr[i][l] = ((i+l)/2)+1;
}
}
}
return arr;
};
// 30% 성공
const solution = (n, left, right) => {
return array(n).reduce((a, b) => a.concat(b)).slice(left, right+1);
};
const array = (n) => {
let arr = new Array(n);
for(let i=0; i<n; i++) {
arr[i] = new Array(n);
for (let l=0; l<n; l++) {
if (i !== l) {
arr[i][l] = i > l ? i+1 : l+1;
}
if (i === l) {
arr[i][l] = ((i+l)/2)+1;
}
}
}
return arr;
};