[코딩테스트] Javascript로 코딩테스트 보기 전 봐야 할 핵심로직 정리

2025. 1. 11. 17:20·Frontend

‘큰돌의터전’님의 ‘자바스크립트로 코딩테스트 보기전 봐야할 핵심로직 12가지’ 유튜브 영상을 보고 정리한 글입니다. 자세한 내용은 해당 유튜브 영상에 나와있으니 참고 부탁드립니다!

 

유튜브 링크: https://www.youtube.com/watch?v=MlvZ2IufTFI


1. 배열 순회

a = [1, 3, 45, 2, 10]

a.forEach((e, i) => {
	console.log(e,i)
})

// 결과
// element와 index가 출력된다.
// 1 0
// 3 1
// 45 2
// 2 3
// 10 4

2. 문자열 분할

const str = "Hello World";
const ret = str.split(" ")
console.log(ret)

// 결과 (공백을 기준으로 분할)
// [ 'Hello', 'World' ]

const a = ret.join('')
console.log(a)
// 결과 (배열을 문자열로 만들어줌)
// HelloWorld

// 배열을 합칠 때 사이에 무언가를 넣고싶다면
// join에 입력하면 그 사이에 들어간다
// 저 위에는 ''를 넣었으므로 아무것도 안들어갔다.


3. 정렬

let numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 4, 5]
numbers = numbers.sort((a, b) => a - b)
console.log(numbers)

// 내림차순을 하고 싶으면 아래와 같이 바꾸자
// numbers = numbers.sort((a, b) => (a - b) * -1)


4. 배열에서 특정 조건을 만족하는 요소만 꺼내고 싶으면

const numbers = [1,2,3,4,5,6];
const ret = numbers.filter(e => e % 2 == 0 )
console.log(ret)

// 결과 : 짝수만 필터링 배열 반환
// [2, 4, 6]

5. 배열의 요소들에 2를 곱해서 반환하고 싶다면

const numbers = [1, 2, 3, 4, 5];
const ret = numbers.map(e => e * 2)
console.log(ret)

// 결과
// [2, 4, 6, 8, 10[

6. 배열의 요소들의 합을 알고 싶다면

const numbers = [1, 2, 3, 4, 5];
const ret = numebrs.reduce((total, e) => total + e, 0)
console.log(ret)

// 결과: 15

7. DFS를 구현하고 싶다면

const graph = {
	1: [2, 3],
	2: [4],
	3: [4, 5],
	4: []
	5: []
};

const dfs = (here, visited = new Set()) => {
	if(visited.has(here)) return
	visited.add(here)
	console.log(here)
	graph[here].forEach(e => dfs(e, visited))
}

dfs(1);

8. 이분탐색을 하고 싶다면

정렬된 배열에서 O(log N)만에 탐색 가능

const a = [1, 2, 3, 4, 5, 6, 7, 8]

const bs = () => {
	let lo = 0;
	let hi = a.length - 1;
	const target = 3;
	
	while(lo <= hi) {
		let mid = Math.floor((lo + hi) / 2)
		
		if(a[mid] === target) {
			return "찾았다!!"
		} else if (a[mid] > target) {
				hi = mid - 1
		} else {
				lo = mid + 1
		}
	}
	
	return -1;
}

const ret = bs()
console.log(ret)

// 결과: 찾았다!!

9. 자바스크립트로 배열을 생성할 때

// 50개짜리 0이 있는 배열을 생성하고 싶을 때
let a = Array(50).fill(0)
console.log(a)

// 결과
// [
//		0, 0, 0, 0, 0, 0, .....
//		....
//		....         , 0
//  ]

// 1이 있는 5x5 2차원 배열을 만들고 싶을 때
let b = Array(5).fill().map(e => Array(5).fill(1))
console.log(b)

// 결과
// [
//   [ 1, 1, 1, 1, 1 ],
//   [ 1, 1, 1, 1, 1 ],
//   [ 1, 1, 1, 1, 1 ],
//   [ 1, 1, 1, 1, 1 ],
//   [ 1, 1, 1, 1, 1 ]
// ]

10. 피보나치 배열을 DP를 사용해서 구현해보자면

const fibo = (idx, memo = {} ) => {
	if (idx <= 2) return 1
	if (idx in memo) return memo[idx]
	memo[idx] = fibo(idx - 1, memo) + fibo(idx - 2, memo)
	return memo[idx]
}
const ret = fibo(10)
console.log(ret)

memo는 계산한 결과를 저장해두는 객체 (처음에는 비어있음)


11. 배열의 요소들을 swap하고 싶다면

const arr = [1, 2, 3, 4, 5];
[arr[1], arr[3]] = [arr[3], arr[1]]
console.log(arr);

구조 분해 할당을 활용하여 간단하게 배열 내 요소들을 swap할 수 있다.

저작자표시 비영리 변경금지 (새창열림)

'Frontend' 카테고리의 다른 글

CORS 에러는 프론트가 해결해야하는가? (어떤 트윗을 보고)  (6) 2025.02.19
Vite 프로젝트에 PWA와 FCM 푸시 알림 적용하기  (1) 2025.01.17
'react-datepicker'에서 날짜 상태를 관리할 때 겪었던 시행착오  (0) 2024.08.03
프로젝트 팀원 코드를 보고 컴포넌트 만드는 법 배우기(typescript + clsx)  (1) 2024.07.21
[Next.js] Next.js(SSR 환경)에서 css 애니메이션이 작동 안하는 이유  (1) 2024.07.12
'Frontend' 카테고리의 다른 글
  • CORS 에러는 프론트가 해결해야하는가? (어떤 트윗을 보고)
  • Vite 프로젝트에 PWA와 FCM 푸시 알림 적용하기
  • 'react-datepicker'에서 날짜 상태를 관리할 때 겪었던 시행착오
  • 프로젝트 팀원 코드를 보고 컴포넌트 만드는 법 배우기(typescript + clsx)
퀵차분
퀵차분
Web Developer 🥐
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (178)
      • Frontend (31)
      • Fedify (4)
      • Study (42)
        • NestJS (2)
        • Node.js (3)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (21)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (10)
        • crohasang_page (3)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    typescript
    react
    자바스크립트
    프로그래머스 자바스크립트
    백준
    KUIT
    fedify
    리액트
    HTML
    프로그래머스
    javascript
    시스템프로그래밍
    알고리즘
    프론트엔드
    인공지능
    티스토리챌린지
    next.js
    음악추천
    타입스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[코딩테스트] Javascript로 코딩테스트 보기 전 봐야 할 핵심로직 정리
상단으로

티스토리툴바