우당탕탕 개발일기
[프로그래머스 / 자바스크립트] 폰켓몬 본문
오늘의 문제는 폰켓몬! 제목은 너무나도 귀엽지만 문제 글자수는 썩 귀엽지않은 문제다ㅎㅎ..
제일 다양한 포켓몬을 고를 수 있는 방법을 찾고 그에 해당하는 포켓몬 종류 번호의 개수를 리턴하는 문제.
입출력 예를 보니,
✔️일단 result의 최댓값은 nums.length / 2
✔️중복된 숫자 제거 먼저 진행해야 하나?
✔️그래서 result의 최댓값이 num.length / 2보다 크거나 작을 때로 구분해야하나?
이런 생각들이 들었다.
일단 배열 내 중복부터 제거하기로!
배열 내 중복 제거 방법은 여러가지가 있지만, 내가 선택한 방법은 Set!
먼저 new Set(nums)로 중복값이 있는 배열을 Set객체로 만들어서 중복을 제거하고,
[...set]로 Set객체를 다시 배열로 변환하였다.
전개연산자라고 하는 [...'set객체']는 Array.from() 또는 forEach() 문을 사용할 수도 있다고 한다.
출처: https://hianna.tistory.com/422 [어제 오늘 내일]
일단 잘못됐을지라도 결괏값을 받아놓고 기댓값과 어떤 수식 관계가 있을지 계속 생각해보았다.
✔️nums.length / 2값과 중복제거 배열인 arr의 length값과의 상관 관계를 발견했다.
nums.length / 2 < arr.length인 경우엔 nums.length / 2가 나오고, 그 이외의 경우에는 arr.length가 나왔다.
💡나의 코드
function solution(nums) {
let arr = [...new Set (nums)];
let answer = '';
return answer = nums.length /2 < arr.length ? nums.length / 2 : arr.length
}
완성된 나의 코드! arr와 new_nums를 합쳐도 잘 돌아가는 것을 확인!
💪🏻사실 또 습관성 for문 해버렸다가 정신차리고 for문을 뺐다. for문을 사용할 때에 대한 공부가 필요한 것 같다..!🤨
💪🏻다른 분들은 nums.length / 2를 아예 따로 선언하고 코드에 넣어 활용했다.
동일한 내용이 들어가는 부분이 2개 이상일 땐 나도 따로 선언하고 코드에 넣어봐야겠다!.
💡수정 된 코드
function solution(nums) {
let arr = [...new Set (nums)];
return answer = nums.length /2 < arr.length ? nums.length / 2 : arr.length
}
이것저것 정리한 나의 코드!
💪🏻 answer값을 처음에 줄 필요도 없었다. for문 사용할 때 있어야해서 썼다가 그대로 남겨둬버림,,
for문시에만 처음 선언이 필요! 나머지는 다시 한 번 생각해보자!
!!습관성 for문, 습관성 초기값 금지!!
📍문제 출처
https://programmers.co.kr/learn/courses/30/lessons/1845
'What I Learned > Algorithm' 카테고리의 다른 글
[javascript] 백준 1110 더하기 사이클 (0) | 2022.03.04 |
---|---|
[javascript] 백준 4948번 베르트랑공준 (0) | 2022.03.02 |
[프로그래머스 / 자바스크립트] K번째수 (0) | 2022.01.25 |
[프로그래머스 / 자바스크립트] 문자열 내 마음대로 정렬하기 (0) | 2022.01.24 |
[프로그래머스 / 자바스크립트] 같은 숫자는 싫어 (0) | 2022.01.24 |