161일차(1) - 폰켓몬, 자릿수 더하기(프로그래머스)

김민찬·2021년 10월 17일
0

취업으로의 여정

목록 보기
163/196

폰켓몬

오늘은 문제를 해석하는 능력을 길러볼려고 문제 설명이 긴 문제 중 Pick해봤다. 하루 45분 동안 2~3문제씩 풀고있어서 10월이 지나기 전에 2단계로 넘어갈 계획이다.

프로그래머스: 폰켓몬

문제 요약: 연구실에 있는 총 N 마리의 폰켓몬 중 N/2마리를 고를 수 있다. 종류가 [3, 1, 2, 3]이라면 3번 두 마리, 1번 한 마리, 2번 한 마리가 있는 것이다.
이때, 중복된 폰켓몬을 뽑으면 한 종류로 생각한다. 최대한 많은 종류의 폰켓몬을 포함해서 N/2마리를 선택하려고 할때 최대 몇 종류를 가져갈 수 있는지 구하여라.

입출력 예

numsresult
[3, 1, 2, 3]2
[3, 3, 3, 2, 2, 4]3
[3, 3, 3, 2, 2, 2]2

나의 풀이

function solution(nums) {
    const maxPick = nums.length/2,
          // 뽑았을 때 중복이 하나도 없어서 가장 많이 선택할 수 있을때를 maxPick이라고 가정 한다.
          dDLen = [...new Set(nums)].length;
          // 중복을 모두 제거한 길이를 dDLen(Deduplication Length)라고 한다.
    
    return maxPick > dDLen ? dDLen : maxPick;
    // 만약 중복을 제거했을때 길이가, N/2를 선택했을때 보다 작으면 중복을 제거했을때 길이가 최대한 많은 종류와 같아서 dDLen를 리턴하고, 이외에는 maxPick을 리턴한다.
}

자릿수 더하기

프로그래머스: 자릿수 더하기

문제: 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어라.
예시) N = 123이면 1 + 2 + 3 = 6을 return 하면 된다.

입출력 예

Nanswer
1236
98724

나의 풀이

function solution(n) {
    const nums = n.toString().split('');
    // split()을 사용하기 위해서 먼저 string으로 바꾸었다. 만약 n이 123이었으면 nums는 ['1', '2', '3']이다
    return nums.reduce((acc, cur) => acc + parseInt(cur), 0);
    // reduce를 사용해서 순서대로 숫자로 다시 변환해서 더한다.
}
profile
두려움 없이

0개의 댓글