Array(), indexOf()(코문풀 bj-2750번,lc-338번,268번)

장정윤·2021년 4월 6일
0

💻코딩문제풀이

▶학습한 내용 (Javascript)

-Array()생성자: 새로운Array 객체 생성시 사용
-indexOf(), includes()
공통점: 배열속 원하는 값을 찾고 싶을 때 사용
차이:
indexOf()는 찾은 값의 첫번째 원소의 위치를 반환해주며, 없을 경우 -1을 리턴
includes()는 T/F로 직관적으로 여부를 리턴

🔎백준문제

#2750 수 정렬하기 <난이도:1>
링크

해설: 첫째 줄에 수의 개수 N이 주어지고, 둘째 줄부터 N개의 줄에 숫자가 주어짐
ex.
Input:
5 수의 개수 N
5 N개의 수 입력받음
4
3
2
1
Output: N개의 수 오름차순 정렬
1
2
3
4
5

문제풀이

let n = parseInt(prompt());
let arr=[];
console.log(n)
for(let i=0;i<n;i++){
    arr[i] = parseInt(prompt());
};
arr.sort(function(a,b){
    return a-b;
});
console.log(arr);

🔎leetcode

#338. Counting Bits <난이도:4>
링크

해설: (음이 아닌 정수) num이 주어졌을 때 0~num까지 각 정수를 이진수로 표현했을 때 1의 개수를 차례로 저장해 반환하는 함수 작성
ex1.
Input: num = 2
Output: [0,1,1]
ex2.
Input: num = 5
Output: [0,1,1,2,1,2]

문제풀이

대표 코드 :

var countBits = function (num) {
  let arr = Array(num);
  arr[0] = 0;
  let len = 1;
  while (len <= num) {
    let count = 0;
    for (let i = 0; i < len && len + i <= num; i++) {
      arr[i + len] = arr[i] + 1;
      count++;
    }
    len += count;
  }
  return arr;
};

bit연산을 이용해서 num배열의 각 원소 값의 0과 1의 개수를 살펴보아 1의 개수를 카운팅한다. 그리고 각 원소의 1의 개수가 담긴 arr를 리턴해주는 방식이다.

이 문제는 온전히 풀지 못해 대표 코드를 해석하는 것으로 마무리한다. 나중에 다시 풀어볼 것!

#268. Missing Number <난이도:1>
링크

해설: nums 배열의 길이가 n일 때 0부터 n 값중 nums 배열에 없는 것을 찾는 문제이다.
ex1.
Input: nums = [3,0,1]
Output: 2
ex2.
Input: nums = [0,1]
Output: 2

-문제풀이

대표 코드 :

var missingNumber = function(nums) {
    let sum = 0, total = 0
    for(let i = 0; i < nums.length; i++) {
        sum += nums[i]
        total += i + 1
    }
    return total - sum
};

cf. 가장 좋아요를 많이 받은 코드를 살펴보면
1.sum에 배열 nums에 들어있는 모든 원소의 합 넣고,
2.total에는 1부터 배열의 길이 n까지 합을 넣은 다음
3.total-nums한 값을 return해 들어있지 않은 값을 찾았다.

내가 작성한 코드

var missingNumber = function(nums) {
    let len = nums.length;
    
    for(let i=0;i<nums.length+1;i++){
        if(nums.includes(i))
            continue;
        else
            return i;
    }
};

nums 배열에 0부터 n까지 값이 포함 되어있는지를 확인하여 미포함된 값을 return하도록 구현했다.

💡풀어볼 문제 목록은 이 notion 페이지에서 확인할 수 있으며, 복제해서 사용해도 됩니다 :)

다시 풀어볼 문제

<난이도 구성>
-난이도 1,2 : 구글링 안하고 직접 푼 문제
-난이도 3: 직접 풀었지만 메서드 구글링한 문제
-난이도 4,5: 직접 못 풀고 답을 참고하여 푼 문제 (꼭 다시 풀어봐야 할 문제)

profile
꾸준히 꼼꼼하게 ✉ Email: jjy306105@gmail.com

0개의 댓글