0. 자바스크립트 코딩테스트 스터디를 시작했다
방학을 맞아 코딩테스트 스터디를 시작했다. 자바스크립트로 코딩테스트를 응시하고자 하는, 웹 프론트엔드 개발자를 희망하는 친구들끼리 모였다. 한동안 알고리즘 문제를 풀지 않아서 잘 풀 수 있을지는 모르겠지만, 그래서 더욱 열심히 해보려한다.
프로그래머스 사이트에서 코딩테스트 탭 → ‘알고리즘 고득점 Kit’ 메뉴를 클릭하면 유형별로 문제를 확인할 수 있다. 먼저 맨 왼쪽 위에 위치한 ‘해시’ 유형부터 풀어보았다. 그 중 맨 첫번째 문제, ‘폰켓몬’을 풀어보자.
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1845
1. 나의 풀이
function solution(nums) {
var answer = 0;
// 빈 배열 선언
var arr = [];
// nums를 순회하면서 지금까지 나오지 않았던 숫자가 나오면 answer에 +1을 해줌
for (var i = 0; i < nums.length; i++) {
// 만약 nums[i]가 arr에 없다면
if (!arr.includes(nums[i])) {
// arr에 해당 값을 넣어줌
arr.push(nums[i]);
// answer에 +1 더해줌
answer++;
}
}
// 만약 answer가 N/2마리 보다 수가 크다면 N/2마리 return
if(answer > nums.length / 2) {
return nums.length / 2;
}
// 아니라면 answer return
else {
return answer;
}
}
해시를 전혀 사용하지 않고 문제를 풀었다.
2. 다른 사람의 풀이
다른 사람들의 풀이를 살펴봤다.
function solution(nums) {
const max = nums.length / 2;
const arr = [...new Set(nums)];
return arr.length > max ? max : arr.length
}
위 풀이에서는 Set가 사용되었는데, 자바스크립트에서 Set는 순서가 없는 중복되지 않은 데이터의 집합이다.
const arr = [...new Set(nums)];
- nums 배열을 Set로 변환해서 nums 배열의 중복된 값을 제거한다.
- 그리고 ‘…’을 활용하여 Set를 다시 배열로 변환한다.
배열에서 중복을 없애기 위해서 Set를 활용하면 좋다는 것을 알게 되었다. 배열에서 Set로, Set에서 배열로 자유자재로 바꾸는 법을 익힐 필요성을 느끼게 되었다.
'Programmers(JavaScript)' 카테고리의 다른 글
[프로그래머스 자바스크립트] ‘같은 숫자는 싫어’ 풀어보기 (3) | 2024.07.17 |
---|---|
[프로그래머스 자바스크립트] '완주하지 못한 선수' 풀어보기 (0) | 2024.07.17 |
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기 (0) | 2024.02.14 |
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 8 풀어보기 (0) | 2024.02.13 |
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 6,7 풀어보기 (1) | 2024.02.13 |