• [프로그래머스] 코딩테스트 Lv.0 요약
    알고리즘 2023. 5. 7. 11:22
    반응형
    이 글은 프로그래머스 코딩테스트 문제중 "코딩테스트 입문" 에 대한 내용이다.
    문제에 대한 풀이가 아닌 팁들을 남기려고한다. (풀이는 아래 깃헙 링크를 참고)
    문제 리스트 - https://school.programmers.co.kr/learn/challenges?order=recent&page=1&partIds=33882
    풀이 코드 - https://github.com/hotehrud/acmicpc/tree/master/programmers/Lv.0

     

     

    프로그래머스에서 제공하는 Lv.0 에 해당하는 100 문제를 풀어보았다.

    쉬운 문제이더라도, 다른 사람의 풀이를 보면서 많은 팁들을 배우게 되었다.

    그러한 내용들을 정리해보고자한다.

    어떤 방식이 더 좋고 나쁘고를 말하고자 하는 것이 아니라는 것을 참고해주길 바란다.

     

    배열 초기값 선언

    Array(5).fill(1)
    Array.from({ length: 5 }, (_, index) => 1);
    // [1, 1, 1, 1, 1]

     

     

    String.split() 응용

    const str = '77717'
    str.split('7').length - 1
    // 7 이 포함된 개수 => 4
    
    // 다른 방식
    str.length - str.replaceAll('7', '').length - 1

    문자열을 split('7') 을 통해 배열로 분리한 후 길이를 통해서 확인할 수 있다.

     

    matchAll 활용

    [...'369'.matchAll(/[3|6|9]/g)]
    // [['3', index: 0, ...], ['6', index: 1, ...], ['9', index: 2, ...]]

    matchAll 을 통해 매칭되는 각 요소를 배열로 반환받을 수 있다.

     

    String 에서 Number 변환

    const str = '123'
    const num = +str
    // 123
    
    // 다른 방식
    const num = Number(str)
    const num = parseInt(str)

    Number, parseInt 이외에도 + 를 통해서도 형 변환이 가능하다.

     

    (스프레드 연산자) String 에서 Array 변환

    const str = 'abcd'
    [...str]
    // ['a', 'b', 'c', 'd']
    
    // 다른 방식
    str.split('')

     

    (스프레드 연산자) Set 에서 Array 변환 

     

    [...new Set('aaabc')]
    // ['a', 'b', 'c']

     

    (스프레드 연산자) Math.max

    const array = [1,2,4,2,5,1,88,4,33]
    Math.max(...array)
    // 88

     

    배열 마지막 요소 접근

    const array = [1, 2, 3, 4]
    array.pop()
    
    // 다른 방식
    array[array.length - 1]

    pop() 은 실제 배열에 영향을 주기 때문에 실제로 잘 사용하지는 않았지만, 상황에 따라 잘 사용할 수도 있을 것 같다.

     

    소수점 제거

    Math.trunc(13 / 4)
    // 3
    
    // 다른 방식
    Math.ceil, round, floor

     

    단순 소수점 제거가 필요할 경우에는 올림, 내림, 반올림을 활용하지않을 수 있다.

     

    String.repeat 활용

    'h'.repeat(3)
    // hhh
    
    // 다른 방식
    Array(3).fill('h').join('')

    문자열을 반복하고 싶은 경우에 활용할 수 있다.

     

    비트 활용

    7 << 10;
    // 7168
    
    // 다른 방식
    7 * Math.pow(2, 10)

     

    비트를 활용한 시프트 연산을 사용할 수 있다.

     

    정규식

    /[a-z]/g === /\D+/
    // \D 는 숫자를 제외한 문자

     

    replace 응용

    const obj = {
        zero: 0, one: 1, two: 2, three: 3, four: 4,
        five: 5, six: 6, seven: 7, eight: 8, nine: 9
      };
    const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => {
      return obj[v];
    });

    replace() 를 활용하면 두번째 인자를 활용한다는 생각을 해본적이 없었는데 위처럼 콜백 함수를 잘 활용할 수 있다.

     

    반응형

    댓글

Designed by Tistory.