일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 원시값
- k번째수
- input type password
- LF
- git
- 응답코드
- IP주소
- REST API
- eslint-prettier
- input 안보임
- eslint
- CRA
- react
- expected linebreaks to be 'lf' but found 'crlf' linebreak-style
- git 개행문자
- git 명령어
- HTTPS
- 프로그래머스
- prettier
- git autocrlf
- 가장큰수
- 개행문자
- expected linebreaks to be 'crlf' but found 'lf' linebreak-style
- lazy-load
- CRLF
- JadenCase
- 참조타입
- 퀵정렬
- password 안보임
- vscode
Archives
- Today
- Total
우파루파의 개발 기록
[프로그래머스] K번째 수 본문
안녕하세요.
이번 문제는 프로그래머스 1단계 - K번째 수 입니다.
이번 문제는 정렬 카테고리의 문제여서, 정렬을 직접 구현하는 것에 의의를 두었습니다.
당장 아는 정렬 알고리즘이 선택 정렬, 버블 정렬, 삽입 정렬 등의 기본 알고리즘뿐이고, 데이터의 양이 적기 때문에 아는 알고리즘 내에서 풀어보았습니다.
제가 풀이한 정답입니다.
정렬 함수는 가독성을 위해 분리했습니다.
function selectionSort(answer, max) {
for (let i = 0; i < Math.min(answer.length, max); i++) {
let minimum = i;
for (let j = i; j < answer.length; j++) {
if (answer[minimum] > answer[j]) {
minimum = j;
}
}
const origin = answer[i];
answer[i] = answer[minimum];
answer[minimum] = origin;
}
return answer;
}
function solution(array, commands) {
const r = []
for (let i=0; i<commands.length; i++) {
r.push(array.slice(commands[i][0] - 1, commands[i][1]));
}
return commands.map(([,,pick], idx) => selectionSort(r[idx], pick)[pick - 1]);
}
아직 정렬 알고리즘에 대해 잘 알지 못해서, 선택 정렬로 한번 풀어보았으니 다른 정렬 알고리즘을 사용해서 또 풀어보아야 할 것 같습니다.
피드백은 언제나 환영이니 부탁드립니다.
읽어주셔서 감사합니다.
'development > 알고리즘' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 만들기 (0) | 2022.09.11 |
---|---|
[프로그래머스] 가장 큰 수 (0) | 2022.08.31 |
[프로그래머스] 위장 (0) | 2022.08.27 |
[프로그래머스] 전화번호 목록 (0) | 2022.08.26 |
[프로그래머스] 폰켓몬 (0) | 2022.08.24 |