일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 자바스크립트 코딩테스트
- 깃허브
- 프론트엔드부트캠프
- 프론트엔드
- 국비지원취업
- 패캠
- 영상처리
- 프로젝트
- 프로그래머스 JS 코테
- 프론트엔드개발자
- 딥러닝
- Java
- 깃
- pokeapi
- 코딩테스트
- 자바스크립트
- 프로그래머스코테
- 국비지원
- JS
- 개인프로젝트
- 패스트캠퍼스부트캠프
- 프로그래머스
- 개발블로그
- 부트캠프
- FE
- 패스트캠퍼스
- 미니 프로젝트
- js코테
- 패캠부트캠프
- 개발 프로젝트
- Today
- Total
가쟤의 해변일기 🐳
프로그래머스 JS 코딩테스트 준비 시작 ! 본문
오늘 처음 코딩 테스트를 준비하기 시작했다.
백준은 node.js라서 프로그래머스에서 자바스크립트로 준비하기로 했다.
단계별로 살펴보는데, 2-3단계는 알고리즘을 활용해서 이케이케.. 하는 ..!
그래서 왕 초보인 나는 0단계부터 시작하기로 했다!
그래서 0단계 문제를 많이 (양치기) 풀어봤고, 1단계도 한 문제 껴있다! (막 어렵진 않았던 문제였지만)
그래도 풀면서 익숙해졌고 매우 재밌다(아직까진 그런데 너무 어려워지면 난 몰라)
수학을 잘 못하긴 하지만 그렇다고 안 될건 없으니까 열심히 해보자
두 수의 나눗셈
물결 연산자 (~~)
function solution(num1, num2) {
return ~~(num1/num2*1000);
}
double tilde: not의 기능을 하는 비트 연산자이다. 10진수 5(16비트 2진수 0000000000000100)에 tilde를 적용하면 -6(16비트 2진수 1111111111111011) 이며 이 과정에서 소수점은 버려지게 된다. -6에 다시 tilde를 적용하면(double tilde, ~~5라고 표기) 다시 정수 5로 돌아오게 되어 결과적으로 Math.floor()와 같은 기능을 하게 된다. 이는 특정 브라우저에서 Math.floor()나 parseInt보다 빠른 퍼포먼스를 보여줄 수 있으나, 유지보수 하는 사람의 입자에서 문맥의 이해에 어려움이 있을 수 있다.
그 외 풀이
Math.floor, trunck, parseInt, 비트 연산자(<<)
Math.floor 와 parseInt의 차이점
Math.floor는 소수점을 만났을 때 '내림'한 정수값을 반환하고 parseInt는 소수점을 만났을 때 소수점 부분을 버린 정수값만 반환합니다. 양수일 때는 이 부분이 눈에 띄지 않지만 음수일 경우 같은 수에도 다른 결괏값이 나올 수 있으므로 주의해야 합니다.
각도기
.filter()
function solution(angle) {
return [0, 90, 91, 180].filter(x => angle>=x).length;
}
function solution(angle) {
return angle < 90 ? 1 : angle === 90 ? 2 : angle < 180 ? 3 : 4;
}
switch/case를 써도 된다.
짝수의 합 ✨
오래 걸린 이유: for문의 정확한 사용법을 몰랐다. for문 내에서 return을 하려고 했다.
-내 풀이-
function solution(n) {
let num = 0
for(let i = 0; i <= n; i+=2){
num += i
}
return num
}
[스터디] 순서의 합
function solution(num_list, n) {
const arr1= num_list.slice(n)
const arr2 = num_list.slice(0, n)
return arr1.concat(arr2)
}
걸린 시간 3분 내
slice, concat 활용
push, 전개연산자, splice, unshift 활용 가능
function solution(num_list, n) {
num_list.unshift(...num_list.splice(n));
return num_list;
}function solution(num_list, n) {
return num_list.slice(n).concat(num_list.slice(0,n));
}
function solution(num_list, n) {
num_list.unshift(...num_list.splice(n));
return num_list;
}
[스터디] 배열 만들기1
-내 코드-
function solution(n, k) {
let arr = []
for(let i = 1; i <= n; i++) {
if (i % k === 0) {
arr.push(i);
}
}
return arr
}
5분 정도 걸린 것 같다
i = 0으로 설정해서 배열에 [0, …]로 시작되어 .shift(), .split() 등등으로 없애보려 했었는데 i = 1로 고치니까 바로 통과
.push()로 배열에 i 들을 넣어준다.
배열의 요소 추가/삭제 차이
추가
.push() : 배열의 끝에 요소를 추가
.unshift() : 배열의 앞쪽에 요소를 추가
.splice(시작위치, 삭제할 것, 추가할 요소…)
삭제
.pop() : 마지막 요소를 제거
.shift() : 맨 앞 요소를 제거
.splice(시작위피, 삭제할 요소 길이, 추가할 요소…)
delete arr[1] : 요소는 그대로 존재하고 값만 삭제
[스터디] 핸드폰 번호 가리기 (1단계)
function solution(phone_number) {
// const endNum = phone_number.slice(-4)
const startNum = parseInt((phone_number.slice(0, -4)).length)
return '*' * startNum
}
왜 “*” * startNum이 안되는거지… (위 코드는 시도하다 실패한..!)
-내 코드- (성공한 코드)
function solution(phone_number) {
const startNum = "*".repeat((phone_number.slice(0, -4)).length)
const endNum = phone_number.slice(-4)
return startNum.concat(endNum)
}
-다른사람 풀이-
const solution = n => [...n].fill("*",0,n.length-4).join("")
문자열 n 을 배열로 바꾸고, 배열의 첫 번째 부터 마지막에서 4번째 전 배열 크기 만큼 * 로 채워라. 이 후에 join 하여 string으로 반환하라.
배열의 평균값
처음엔 for문으로 풀려고 했는데 [i]이게 에러가 나서… forEach로 변경
-내 코드-
function solution(numbers) {
let sum = 0
numbers.forEach(num => {
sum += num;
})
return sum / numbers.length
}
-다른사람 풀이-
function solution(numbers) {
var answer = 0;
for(i of numbers) {
answer += i
}
return answer / numbers.length;
}
for of 사용 !
reduce를 사용하는 문제였다….
양꼬치
-내 코드-
function solution(n, k) {
const sheep = 12000
const can = 2000
let total = n * sheep + k * can
if (n >= 10) {
return total - can * Math.trunc(n / 10)
} else {
return total
}
}
Math.trunc 써서 성공!
-다른사람 풀이-
function solution(n, k) {
k-=~~(n/10);
if (k < 0) k = 0;
return n*12000+k*2000;
}
'코딩 테스트 in JS' 카테고리의 다른 글
프로그래머스 JS 코테 | 서울에서 김서방 찾기, 음양 더하기 (1) | 2023.08.28 |
---|---|
JS 프로그래머스 코딩테스트 | 수박, 가운데 글자 가져오기, 문자열 다루기 기본 (1) | 2023.08.24 |
JS 프로그래머스 코테 1단계 | 자연수 뒤집어 배열로 만들기, 제일 작은 수 제거하기, 자릿수 더하기 (4) | 2023.08.21 |
JS 프로그래머스 코테 1단계 | 짝수와 홀수, x만큼 간격이 있는 n개의 숫자, 평균 구하기 (0) | 2023.08.07 |
JS 코테 - 프로그래머스 1단계! K번째수 (0) | 2023.08.06 |