본문 바로가기

코딩테스트

(21)
[Algorithm] 큐(Queue) 자료구조 1. 큐(Queue) 큐는 선입선출(First In First Out, FIFO) 형태의 자료구조를 의미한다. 스택(stack)과 달리 제일 처음 들어간 데이터가 가장 먼저 나온다. 2. 문제 정보 왕국의 이웃 나라 외동딸 공주가 숲속의 괴물에게 잡혀갔습니다. 정보 왕국에는 왕자가 N명이 있는데 서로 공주를 구하러 가겠다고 합니다. 정보왕국의 왕은 다음과 같은 방법으로 공주를 구하러 갈 왕자를 결정하기로 했습니다. 왕은 왕자들을 나이 순으로 1번부터 N번까지 차례로 번호를 매긴다. 그리고 1번 왕자부터 N 번 왕자까지 순서대로 시계 방향으로 돌아가며 동그랗게 앉게 한다. 그리고 1번 왕자부터 시 계방향으로 돌아가며 1부터 시작하여 번호를 외치게 한다. 한 왕자가 K(특정숫자)를 외치면 그 왕자는 공주를 ..
[CodingTest] 쇠막대기, Stack 푸는데 어려웠던 문제 거나, 생소한 개념이 있는 문제들을 기록하려 한다. 이번 문제는 stack을 활용하여 푸는 것이었는데, 지문만 보고 해답을 찾기가 어려웠었다. 그래서 상세하게 풀이를 적어보고 복습하기 위해서 포스팅한다. 1. 문제 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에 서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. • 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. • 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. • 레이저는 어떤 쇠막대기의 양 끝점과도 겹..
[Algorithm] 스택(Stack) 자료구조 1. Stack 스택은 한쪽에서만 데이터를 넣고 뺄 수 있는, 후입선출(LIFO) 형태의 자료구조를 말한다. 후입선출(Last In First Out)은 가장 먼저 들어간 것이 가장 나중에 나오는 것을 의미한다. 따라서 자바스크립트에서 스택을 구현하려면, 배열의 Push와 Pop을 사용하면 된다. 2. 예시 입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요. function solution(s) { let answer = ''; let stack = []; for (const x of s) { if (x === '(') stack.push(x); else if (x === ')') stack.pop(); else { if (stack.leng..
[Algorithm] 슬라이딩 윈도우 알고리즘(Sliding Window Algorithm) 1. 슬라이딩 윈도우 알고리즘(Sliding Window Algorithm)이란? 슬라이딩 윈도우 알고리즘은 고정 사이즈의 윈도우를 이동시키면서, 윈도우 내에 있는 데이터를 이용해 문제를 풀이하는 알고리즘을 말한다. 이때 윈도우 안에 있는 데이터는, 양 끝에 있는 원소들만 변화한다. 2. 예시 현수의 아빠는 제과점을 운영합니다. 현수 아빠는 현수에게 N일 동안의 매출기록을 주고 연속된 K일 동안의 최대 매출액이 얼마인지 구하라고 했습니다. 만약 N=10이고 10일 간의 매출기록이 아래와 같습니다. 이때 K=3이면 12 15 11 20 25 10 20 19 13 15 연속된 3일간의 최대 매출액은 11+20+25=56만원입니다. 여러분이 현수를 도와주세요. //내코드 function solution(k, ..
[Algorithm] 투 포인터 알고리즘 (Tow Pointer Algorithm) 1. 투 포인터 알고리즘(Tow Pointer Algorithm)이란? 투 포인터 알고리즘은 말 그대로 두 개의 포인터 위치를 기록하며 처리하는 알고리즘을 말한다. 주로 정열된 배열에서 목표 값에 해당하는 요소를 찾을때 많이 사용한다. 투 포인터 알고리즘에는 서로를 향해 두 포인터를 움직이는 것과 같은 방향으로 두 포인터를 움직이는 것, 2가지 유형이 있다. 1) 서로를 향해 두 포인터를 움직이는 유형 두 개의 포인터를 시작과 끝에 설정하고, 포인터가 만날때까지 서로를 향해 이동한다. 2) 같은 방향으로 두 포인터를 움직이는 유형 두 개의 포인터를 같은 위치에 설정하고, 동일한 방향으로 포인터를 이동한다. 2. 예제 오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램..