[프로그래머스 자바스크립트] '폰켓몬' 풀어보기

2024. 7. 16. 21:47·Algorithm/Programmers(JavaScript)

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)];

  1. nums 배열을 Set로 변환해서 nums 배열의 중복된 값을 제거한다.
  2. 그리고 ‘…’을 활용하여 Set를 다시 배열로 변환한다.

배열에서 중복을 없애기 위해서 Set를 활용하면 좋다는 것을 알게 되었다. 배열에서 Set로, Set에서 배열로 자유자재로 바꾸는 법을 익힐 필요성을 느끼게 되었다.

저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Programmers(JavaScript)' 카테고리의 다른 글

[프로그래머스 자바스크립트] ‘같은 숫자는 싫어’ 풀어보기  (4) 2024.07.17
[프로그래머스 자바스크립트] '완주하지 못한 선수' 풀어보기  (0) 2024.07.17
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기  (1) 2024.02.14
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 8 풀어보기  (0) 2024.02.13
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 6,7 풀어보기  (2) 2024.02.13
'Algorithm/Programmers(JavaScript)' 카테고리의 다른 글
  • [프로그래머스 자바스크립트] ‘같은 숫자는 싫어’ 풀어보기
  • [프로그래머스 자바스크립트] '완주하지 못한 선수' 풀어보기
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 8 풀어보기
퀵차분
퀵차분
Web Developer 🥐
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (178)
      • Frontend (31)
      • Fedify (4)
      • Study (42)
        • NestJS (2)
        • Node.js (3)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (21)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (10)
        • crohasang_page (3)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    음악추천
    HTML
    알고리즘
    티스토리챌린지
    typescript
    프론트엔드
    타입스크립트
    프로그래머스 자바스크립트
    오블완
    백준
    시스템프로그래밍
    react
    리액트
    프로그래머스
    자바스크립트
    인공지능
    KUIT
    fedify
    javascript
    next.js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[프로그래머스 자바스크립트] '폰켓몬' 풀어보기
상단으로

티스토리툴바