-
[프로그래머스] 코딩테스트 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() 를 활용하면 두번째 인자를 활용한다는 생각을 해본적이 없었는데 위처럼 콜백 함수를 잘 활용할 수 있다.
반응형'알고리즘' 카테고리의 다른 글
비트마스크(BitMask) 는 무엇인가? :: 마이구미 (16) 2019.10.20 [자료구조] 스택, 큐는 무엇인가? :: 마이구미 (2) 2019.09.07 거듭제곱 알고리즘 :: 마이구미 (0) 2018.06.06 힙정렬(Heap Sort) 알고리즘 :: 마이구미 (3) 2018.04.17 합병정렬 알고리즘 :: 마이구미 (0) 2018.04.14