문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12906
1. 자바스크립트에는 스택이 없나?
스택을 활용해서 푸는 문제 같았고, 만약 C++로 문제를 풀었다면 STL stack을 활용해서 금방 풀 수 있을 것 같았다.
하지만 자바스크립트에도 스택이 있나? 검색해보니 배열을 활용해서 스택을 직접 구현하는 방법들이 많이 나왔다. 근데 그러지말고 바로 배열을 쓰면 될 것 같아 배열을 사용했다.
2. 하지만 자바스크랩트 배열에는 top이 없다.
하지만 문제를 통과하지 못했다. 왜냐하면 내가 무의식적으로 top을 활용했는데, 자바스크립트의 배열에 .top을 붙여봤자 아무 일도 일어나지 않기 때문이다.
top 대신 ‘배열.length - 1’을 넣으면 어떨까 생각했고, 그렇게 코드를 짜니 정답이었다!!
function solution(arr)
{
// 빈 배열 선언
var answer = [];
// arr을 순회하면서 answer의 top가 arr[i]가 아니라면 arr[i]를 answer에 push
for(var i = 0; i < arr.length; i++) {
if(answer[answer.length - 1] !== arr[i]) {
answer.push(arr[i])
}
}
return answer;
}
3. 다른 사람의 풀이
function solution(arr)
{
return arr.filter((val,index) => val != arr[index+1]);
}
위 코드는 배열의 해당 index 값과 그 다음 index 값을 비교해서, 같지 않은 index 값만 filter한 배열을 return 해주었다. 정말 간단하고 명쾌한 풀이다!
그리고 다른 풀이에서 꿀팁을 발견했는데, 바로 배열의 length 값을 변수로 할당해줘야 성능이 더 좋다는 것이었다.
왜냐하면 변하지 않는 length 값을 변수로 할당해줘야 배열의 length 계산을 한 번만 하기 때문이다! 배열의 length 값을 변수로 빼놓는 것은 생각해보지 않았는데, 다음부터는 이렇게 해야겠다.
'Programmers(JavaScript)' 카테고리의 다른 글
[프로그래머스 자바스크립트] ‘체육복’ 풀어보기 (0) | 2024.08.07 |
---|---|
[프로그래머스 자바스크립트] ‘기능개발’ 풀어보기 (0) | 2024.07.17 |
[프로그래머스 자바스크립트] '완주하지 못한 선수' 풀어보기 (0) | 2024.07.17 |
[프로그래머스 자바스크립트] '폰켓몬' 풀어보기 (2) | 2024.07.16 |
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기 (0) | 2024.02.14 |