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에서 배열로 자유자재로 바꾸는 법을 익힐 필요성을 느끼게 되었다.
'Algorithm > 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 |