티스토리 뷰
오랜만에 코딩 테스트를 해보았다.
확실한 건 이전에 아무것도 모를 때 하는 시점보단, 기본기를 하고 난 후 많이 달라졌다.
일단 무엇을 해야할지 안다.
하지만 아직까진 검색능력이 많이 떨어져서 조금 찾는데 오래 걸렸다.
1. 문제 설명
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 한다.
예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면
- array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
- 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
- 2에서 나온 배열의 3번째 숫자는 5입니다.
배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성한다.
2. 제한사항
- array의 길이는 1 이상 100 이하입니다.
- array의 각 원소는 1 이상 100 이하입니다.
- commands의 길이는 1 이상 50 이하입니다.
- commands의 각 원소는 길이가 3입니다.
3. 입출력 예
array | commands | return |
[1, 5, 2, 6, 3, 7, 4] | [[2, 5, 3], [4, 4, 1], [1, 7, 3]] | [5, 6, 3] |
4. 입출력 예 설명
[1, 5, 2, 6, 3, 7, 4]를 2번째부터 5번째까지 자른 후 정렬합니다. [2, 3, 5, 6]의 세 번째 숫자는 5입니다.
[1, 5, 2, 6, 3, 7, 4]를 4번째부터 4번째까지 자른 후 정렬합니다. [6]의 첫 번째 숫자는 6입니다.
[1, 5, 2, 6, 3, 7, 4]를 1번째부터 7번째까지 자릅니다. [1, 2, 3, 4, 5, 6, 7]의 세 번째 숫자는 3입니다.
5. solution.js
function solution(array, commands) {
var answer = [];
var list = [];
for(var i = 0; i < commands.length; i++){
list = array.slice(commands[i][0] - 1, commands[i][1]);
list.sort((a,b) => a-b);
answer[i] = list[(commands[i][2])-1];
}
return answer;
}
6. 풀이 뒷 이야기
처음에는 이 답을 전혀 몰랐다. 그래서 일단 코드 실행으로 먼저 이해를 도왔다.
그리고 차근차근 이해를 시작하였고, 다음과 같은 코드를 나오게 만들었다.
function solution(array, commands) {
var answer = [];
var list = [];
list = array.slice(1, 5);
list = list.sort();
answer = list[2];
return answer;
}
먼저 이중 배열에 대한 이를 통해 방법을 찾았고, 이 코드를 통해 반복문을 만들었다.
여기서 힘들었던 부분은 slice를 찾는 것이 시간이 좀 걸렸다. 그리고 적용하는 법도 오래 걸렸다.
보통 sort에 대한 코드에서 sort(a, b)에 대한 것이 나왔지만... 아직은 잘 이해가 가지 않아서 일단 필자가 이해가 가는 부분으로 코드를 작성하였다.
이제 조금씩 어떻게 문제를 이해해야 하고, 풀어야 할지 조금씩 감이 잡혀가는 하루였다.
'Front-End > Javascript' 카테고리의 다른 글
자바스크립트에서 문자열을 바꿔주는 함수 : parseInt() (0) | 2021.04.12 |
---|---|
parseInt (0) | 2021.02.27 |
순서도로 배우는 자바스크립트 6 (0) | 2020.12.16 |
순서도로 배우는 자바스크립트 5 (0) | 2020.12.13 |
순서도로 배우는 자바스크립트 4 (0) | 2020.12.12 |
- Total
- Today
- Yesterday
- 자바
- 리액트 썸네일
- 노드
- mongodb
- javascript
- 배열
- 파이썬
- programmers
- react
- 리덕스
- 코딩테스트
- Visual Studio Code
- Switch
- array
- 리액트
- node
- java
- redux
- CSS
- node.js
- 뷰
- Git
- 리액트 유튜브
- 자바스크립트
- node-sass
- 재공부
- 프로그래머스
- Coding Test
- 함수
- github
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |