숫자로 이루어진 배열인 nums를 인자로 전달합니다. 숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.
예를 들어,
nums = [3,2,3]
return 3
nums = [2,2,1,1,1,2,2]
return 2
nums = [3,2,3]
return 3
nums = [2,2,1,1,1,2,2]
return 2
첫번째 역추적해본 코드👮
두번째 소개받은 코드💕
알고리즘 문제를 읽었을 때 아무생각도 안났었는데 조금씩 내가 무슨 작업이 필요할 것인지 생각이 떠오른다.
아주 작은 부분일지라도 나의 뇌 깊은 어느 곳에 저장되어 있는 내 스스로의 데이터라고 생각하니 기쁘다.
내가 한글로 생각해낸 것을 실현 시키기 위해 중복된 값찾기를 구글링 해보았다.
잠깐. 중복되는 애만 찾는게 아니다! 중복된 값이 많은
애가 주어진 인자의 길이의 과반수가 넘는지도 확인해야한다!
역추적 코드에서는 짝꿍님과 함께 의견을 나누며 나의 소박한 풀이를 말로써 표현해보았다. 기분좋은 경험이다!
소개받은 코드를 풀이를 들어보니 또 새로운 접근 방법이 있었다.
Set
ㅁ 중복이 허용되지 않는 객체. 안에 이미 같은 값이 존재한다면 추가되지 않는다.
ㅁ let x = new Set();
let x = new Set([1,2,3,4,5]);
// set(5) {1,2,3,4,5}
let Y = new Set("오늘은 화요일");
// Set(7) {'오', '늘', '은', ' ','화','요','일'}
ㅁ 오... 글자는 하나씩 쪼개진다. 띄어쓰기도!
let x = new Set([1,2,3,4,5]);
x.add(9)
console.log(x); // {1,2,3,4,5,9}
x.size;
console.log(x); // 6.값의 수를 확인(length역할)
x.delete(3)
console.log(x);
x.has(5)
console.log(x); //true
x.clear();
console.log(x); // Set(0)
set으로 중복된 값을 빼내주고, for문을 돌면서 같은 값이 있으면 하나씩 카운트해주고, 그 길이가 과반수가 넘으면 answer라는 변수에 그 키값을 준다!
초콜렛 틀을 만든 후 녹인 초코렛을 부으면서 만드는 느낌이다.