🗃️javascript/프로그래머스
폰켓몬(Lv.1)[해시의 개념을 생각해보고, 단순히 구현하자]
하얀성
2023. 6. 20. 17:01
해시 알고리즘을 구현해내서 답을 구하려 했는데 생각보다 어렵다.
하다가 실패했다.
아래는 처음 구상도 및 코드
{
돌때마다 answer +1씩 추가.
정렬 하고. 맨 뒤의 값과 같은 모든 값들 제거 후 answer +1
단, answer이 N/2 까지만 값을 증가 시킬 수 있음.
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
function solution(nums) {
let answer = 0;
const sortedNums = [...nums].sort(); // 배열 복사 후 정렬
for (let i = 1; i <= sortedNums.length / 2; i++) {
let newNums = sortedNums.join(""); // 정렬된 배열을 문자열로 변환
let selected = newNums[newNums.length - 1];
if (answer + 1 !== sortedNums.length / 2) {
answer += answer + 1;
}
newNums = newNums.split(`${selected}`); // 문자열을 배열로 변환 후 선택된 값 삽입
selected = "";
}
return answer;
}
|
cs |
function solution(nums) {
var answer = [];
var max = nums.length / 2;
for(let i = 0; i < nums.length; i++) {
if(answer.length < max) {
if(!answer.includes(nums[i])) {
answer.push(nums[i]);
}
}
}
return answer.length;
}
난 해시 알고리즘처럼 앞 뒤를 제거하는 방식으로 풀려고 했는데.. 너무 복잡하게 접근한 것 같다.
includes()를 통해서 계속 이전의 선택한 폰켓몬 값과의 중복이... answer 안에 있나 비교하면서
answer의 한계 길이까지 폰켓몬을 넣어주면 되는 것이었다.
unction solution(nums) {
const max = nums.length / 2;
const arr = [...new Set(nums)];
return arr.length > max ? max : arr.length
}
다른 사람의 문제풀이 이다. Set을 통해 고유한 값만을 arr에 넣어준다음
배열의 길이가 더 길면 max를 더 짧으면 arr.length로 출력하게 만들었다.
미처따 미처써