티키카타! 코드타카! - 7

Judy·2021년 10월 26일
0
post-thumbnail

🎵 문제

숫자로 이루어진 배열인 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

  • 가정
    nums 배열의 길이는 무조건 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라는 변수에 그 키값을 준다!

  • 초콜렛 틀을 만든 후 녹인 초코렛을 부으면서 만드는 느낌이다.

profile
영원히 공부하는 멋진 장선생!!

0개의 댓글