프로그래머스 풀이

[Programmers] level 0) 문제 꿀팁 중간 정리(1)

진기명기 2023. 3. 17. 00:00
🫠 프로그래머스 level0을 풀면서  새삼 또 한 번 나보다 머리 좋은 개발자분들이 정말 많구나.. 느꼈다.
나와 다르게 푼 풀이 중 배울 점들을 정리하기 위해 문제 하나하나 어떻게 풀었는지 확인하며 메모처럼 작성해 놓았다.
이번에 중간 정리를 통해 계속해서 머릿속에 박을 생각이다.

 

 


👉🏻 이중 3항 연산자 사용

🫠 a > b ? (check ? 1 : 2) : (check ? 3 : 4)

❗️ a, b, check는 임의의 변수
✅ 3항연산자를 이중으로 쓸 생각은 전혀 못 했는데, 해당 조건에 여러 가지 답이 필요할 경우 사용하면 좋을 것 같다.

 

 

 

👉🏻 toLocalString()

✅ toLocalString()을 통해 숫자 3자리마다 ','를 찍을 수 있다.

 

 

 

👉🏻 repeat()

🫠 배열.map((item) => item.repeat(n))

✅ repeat()함수를 이용해서 원하는 숫자 n만큼 반복해서 데이터를 찍을 수 있다. 
매번 for문이랑 while문밖에 안 썼는데,, 왜 이렇게 repeat()을 까먹는 걸까..!

 

 

 

👉🏻 1~n까지 배열 만들기

🫠 1부터 n까지의 배열 만들기
let arr = new Array(n).fill(1)
arr.map((item, index) => item + index)

✅ 코딩테스트를 보면서 가장 많이 사용하는 배열 만드는 법!
1, 2, 3, 4, 5,... , n까지의 배열이 필요할 때 사용하면 좋다.

 

 

 

👉🏻 sort(조건 추가)

🫠 배열.sort((a,b) => a-b) 

✅ sort()는 1~9까지 정렬할 때, 다른 조건 없이 사용하기 편하지만, 10부터는 문자열로 해석하기 때문에 위와 같이 조건을 주지 않으면 2가 10보다 크다고 해석을 해버린다. 알고 있자!

 

 

 

👉🏻 문자열 & 숫자 만들기

🫠 문자열 -> n+'' &  숫자 -> +n

✅ 물론 String(n) & Number(n)도 있지만, 조금 더 간결하게 쓰기 위해 +''와 +만 붙여주는 것을 기억하자

 

 

 

👉🏻 replaceAll()

🫠 replaceAll('B', '')

✅ replaceAll을 사용하면 만약 문자열 'abBBcd'가 있을 경우, 특정 문자 'B'를 삭제하고 싶을 때, 전부 삭제할 수 있다. 

 

 

 

👉🏻 replace() 정규표현식

🫠 문자열.replace(/[^0-9]/g, '')

✅ 만약 문자열 'a1b2c3d4e5'가 있을 때, 위와 같이 코드를 작성한다면 숫자만 반환이 된다. (output : 12345)
왜냐? 앞에 ^가 있기 때문!!! 없으면 0-9를 제외한 나머지 abcde가 반환된다!!!
✅ 정규표현식은 언제 봐도 정말 어렵다^^! 0~9까지 가져오는 기본 형식은 알고 있자. 
아래 링크를 통해 정규표현식, newRegExp() 등 확인해 보자

https://cyjcyj.tistory.com/91

 

[javascript] replace(), replaceAll(), 정규표현식 new RegExp() 정리

🫠 프로그래머스 문제를 풀면서 뒤통수를 맞은 듯한 느낌이 들어 블로그로 정리할까 한다. replace()에 대해서는 저번에 문자열 정리 포스팅을 작성하면서 다뤘었는데, 어찌 replaceAll() 함수가 있

cyjcyj.tistory.com

 

 

 

👉🏻 split()을 기준으로 존재여부 확인

🫠 문자열 내에 해당 문자가 있는지 존재여부 확인 (str1 = abcdefg,  str2 = abc)
str1.split(str2).length > 1 ? true : false

✅ 만약 str1 문자열이 str2 문자열을 갖고 있다면, split()에 str2를 기준으로 나눌 때, 최소 두 덩어리로 쪼개진다.
따라서 str1의 길이는 무조건 1 이상..!

 

 

 

👉🏻 제곱근 구하기 Math.sqrt()

🫠 Math.sqrt(n) % 1 === 0

✅ 제곱근 구할 때, 나머지가 있으면 제곱근이 없는 것으로 취급!
✅ Number.isInteger(n % 1)로도 구할 수 있다. (true & false로 반환)