알고리즘

[프로그래머스] 코딩테스트 Lv.0 요약

mygumi 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() 를 활용하면 두번째 인자를 활용한다는 생각을 해본적이 없었는데 위처럼 콜백 함수를 잘 활용할 수 있다.

 

반응형