function solution(num_list) {
return num_list.reverse()
}
1. 나의풀이
우선 크게 3가지 방법이 떠올랐다.
방법1. 무식하게풀기 => 배열1번부터 마지막까지 새 변수에 저장해서 뒤집은 배열에 unshift해주기
방법2. 배열 마지막 원소를 첫번쨰원소에 넣는 식으로 하기
방법3. reverse() 내장함수 사용하기
=> 방법3 내장함수 사용은 왠만하면 안하고 풀려고한다. 알고리즘 연습이기때문 다른언어에는 이런 내장함수가 없는걸로 알고 있다.
방법1. 무식하게 풀기
function solution(num_list) {
let i =0;
let temp = [];
let newNum_list= [];
for(i; i< num_list.length; i++){
temp[i] = num_list[i]
newNum_list.unshift(temp[i])
}
return newNum_list;
}
방법3. reverse() 내장함수 사용하기 (가장 많이 푼 풀이 1315명)
function solution(num_list) {
return num_list.reverse();
}
방법2는 실패했다.
방법4. 블로그참고 https://hianna.tistory.com/448 for 반복문 사용
function solution(num_list) {
let reverse = [];
for(let i=num_list.length-1; i>=0; i--){
reverse.push(num_list[i])
}
return reverse;
}
느낀점.
방법1은 배열에서 왠만하면 사용하지말라는 unshift를 사용했다.. 실력이 부족한 탓인지 이 방법이 두번쨰방법 다음으로 생각났는데 어쨌거나 문제는 풀 수 있었다. 하지만 비효율적이라는건 알고 있다. 아직 알고리즘 문제푼지 얼마 안됬기 때문에풀 수 있음에 기분이 좋기는 했다.
사실 방법2를 처음 생각했는데 마지막 인덱스를 0번인덱스로 ...마지막-1인덱스를 1번인덱스로 하는 과정에서 [1,2,3,4,5] 라면 [5,4,x,x,x] 로 중간 전까지만 풀리고 결국 막혔다.
방법4는 블로그에서 참고했지만, 이정도는 조금더 생각하면 나오지 않았을까? 하는 생각이든다.
추가
방법5. while 문 사용
function solution(num_list) {
let reverse = [];
let cnt =num_list.length -1;
while(cnt>=0){
reverse.push(num_list[cnt]);
cnt--
}
return reverse;
}
'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글
[programmers] Lv0. 직각삼각형 출력하기 Day6 (re[ ]) (0) | 2023.02.27 |
---|---|
[programmers] Lv0. 문자열뒤집기 Day6 (0) | 2023.02.19 |
[programmers] Lv0. 나이출력 Day5 (very easy) (0) | 2023.02.16 |
[programmers] Lv0. 아이스 아메리카노 Day5 (0) | 2023.02.15 |
[programmers] Lv0. 배열의 평균값 (ps. Lv0도 어려워요) Day4 (0) | 2023.02.15 |