Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Method
- TypeScript
- 노드js
- Javascript
- Array
- CLI
- 프로그래머스
- react
- 노드
- 코딩테스트
- Nextjs
- 앵귤러
- indexOf
- 개발
- error
- codingtest
- Reduce
- slice
- npm
- 코딩테스트연습
- 백엔드
- 타입스크립트
- angular
- 노드제이에스
- 자바스크립트
- nodejs
- 에러
- 마음커넥션
- Programmers
- node
Archives
- Today
- Total
Suzie's Blog
[프로그래머스] 배열의 원소만큼 추가 본문
반응형
SMALL
문제 설명
아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 양의 정수 배열 `arr`가 매개변수로 주어질 때, `arr`의 앞에서부터 차례대로 원소를 보면서 원소가 a라면 X의 맨 뒤에 a를 a번 추가하는 일을 반복한 뒤의 배열 X를ㄹ return 하는 solution함수를 작성해 주세요.
제한사항
1 ≤ arr의 길이 ≤ 100
1 ≤ arr의 원소 ≤ 100
입출력 예
arr result [5, 1, 4] [5, 5, 5, 5, 5, 1, 4, 4, 4, 4] [6, 6] [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6] [1] [1]
입출력 예 설명
입출력 예 #1
예제 1번에 대해서 a와 X를 나타내보면 다음 표와 같습니다.
a X [] 5 [5, 5, 5, 5, 5] 1 [5, 5, 5, 5, 5, 1] 4 [5, 5, 5, 5, 5, 1, 4, 4, 4, 4]
따라서 [5, 5, 5, 5, 5, 1, 4, 4, 4, 4]를 return 합니다.
입출력 예 #2
예제 2번에 대해서 a와 X를 나타내보면 다음 표와 같습니다.
a X [] 6 [6, 6, 6, 6, 6, 6] 6 [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
따라서 [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]를 return 합니다.
입출력 예 #3
예제 2번에 대해서 a와 X를 나타내보면 다음 표와 같습니다.
a X [] 1 [1]
따라서 [1]을 return 합니다.
나의 풀이
const solution = arr => {
const result = [];
for(let i=0; i<arr.length; i++){
for(let j=0; j<arr[i]; j++){
result.push(arr[i])
}
}
return result
}
지금 답을 보니 아주 간단하지만 은근히 푸는데 애를 먹었던 문제이다.
처음 접근을 map으로 시도했고 repeat() method를 이용하여 문제를 풀었다.
하지만 숫자가 한자리 수면 가능하지만 두자리 이상일 경우 문제가 생간다는걸 발견했다
일단 위의 풀이를 설명하자면
빈 배열 result를 생성해주고
for문을 한번 arr의 길이만큼 돌려준다. 예를들어 arr = [11, 11, 1]이라면 총 3번 반복
그 안에서 for문을 한번 더 돌려준다. 이번엔 arr의 각 원소에 명시된 길이만큼!
그럼 첫번째 인덱스의 값인 11이 총 11번 반복문을 돌것이다.
이때 빈배열 result에 arr 해당 인덱스의 값을 반복적으로 넣어주면
아래와 같은 결과가 나올것이다
[ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1 ]
11 열한번 *2 + 1 한번
인상 깊었던 다른 사람의 풀이
function solution(arr) {
return arr.reduce((list, num) => [...list, ...new Array(num).fill(num)], []);
}
이 코드는 이해가 잘 안가는데 혹시 이해 가시고 설명 가능하시면 댓글 부탁드립니다 ㅠㅠ
반응형
LIST
'개발 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 문자열 돌리기(JavaScript) (2) | 2023.10.19 |
---|---|
[프로그래머스] 가까운 1 찾기 (JavaScript) (0) | 2023.09.20 |
[프로그래머스] 접미사인지 확인하기 (0) | 2023.07.23 |
[프로그래머스] 카운트 다운(JavaScript) (0) | 2023.06.16 |
[프로그래머스] 마지막 두 원소(JavaScript) (0) | 2023.06.14 |