<문제소개>
- 문제명 : 폰켓몬
- 사이트 : 프로그래머스
- 난이도 : level 1
- 사용 언어 : javascript
<문제 풀이>
접근 방식
1. 주어진 nums 배열에서 nums의 길이 / 2( = maxChoise)만큼의 길이의 배열을 만드는 데 서로 다른 원소를 고를 수 있는 경우의 수가 몇 가지인지 계산 (= countChoise)
2. countChoise가 maxChoise보다 많으면 답은 maxChoise
3. countChoise가 maxChoise보다 적으면 답은 countChoise
<내 코드>
function solution(nums) {
const countNums = nums.length;
const maxChoise= countNums / 2;
const choise = [];
for (let i = 0; i < countNums; i++) {
if (choise.length === maxChoise) {
countChoise = maxChoise;
return countChoise;
}
if (choise.indexOf(nums[i]) === -1) {
choise.push(nums[i]);
}
}
countChoise = choise.length;
return countChoise;
}
<보완할 점>
Set 객체를 사용하면 원시값이든 참조값이든 상관없이 unique한 값을 저장할 수 있다.
-> array객체를 set객체로 변환한 후 다시 array객체로 변환하면 유일한 값만을 포함하는 array객체를 쉽게 만들수 있다.
1. array객체를 set객체로 변환
const nums = [1, 2, 3, 1];
mySet = new Set(nums); // {1, 2, 3}
2. set객체를 array객체로 변환
// set 객체를 array객체로 변환하는 방법 1 (Array.from 메소드)
Array.from(new Set(nums));
// set 객체를 array객체로 변환하는 방법 2 (전개 연산자)
[...new Set(nums)]
코드 수정
function solution(nums) {
const countNums = nums.length;
const maxChoise = countNums / 2;
const uniqueArray = [...new Set(nums)];
const uniqueChoise = unuqueArrat.length;
return uniqueChoise > maxChoise ? maxChoise : uniqueChoise;
}
'Programming' 카테고리의 다른 글
[Algorithm] 프로그래머스 - level1 <신규아이디 추천> (0) | 2021.05.27 |
---|---|
[Algorithm] 프로그래머스 - level1 <모의고사> (0) | 2021.05.26 |
식별자를 지정하는 4가지 방법 (0) | 2021.03.08 |
[CSS] Position의 모든것★ (0) | 2021.03.01 |
[HTML] section태그와 article 태그의 차이점 (0) | 2021.02.16 |