[알고리즘] 택배상자
·
알고리즘
문제 설명 영재는 택배상자를 트럭에 싣는 일을 합니다. 영재가 실어야 하는 택배상자는 크기가 모두 같으며 1번 상자부터 n번 상자까지 번호가 증가하는 순서대로 컨테이너 벨트에 일렬로 놓여 영재에게 전달됩니다. 컨테이너 벨트는 한 방향으로만 진행이 가능해서 벨트에 놓인 순서대로(1번 상자부터) 상자를 내릴 수 있습니다. 하지만 컨테이너 벨트에 놓인 순서대로 택배상자를 내려 바로 트럭에 싣게 되면 택배 기사님이 배달하는 순서와 택배상자가 실려 있는 순서가 맞지 않아 배달에 차질이 생깁니다. 따라서 택배 기사님이 미리 알려준 순서에 맞게 영재가 택배상자를 실어야 합니다. 만약 컨테이너 벨트의 맨 앞에 놓인 상자가 현재 트럭에 실어야 하는 순서가 아니라면 그 상자를 트럭에 실을 순서가 될 때까지 잠시 다른 곳에..
[알고리즘] 햄버거 만들기
·
알고리즘
문제 설명 햄버거 가게에서 일을 하는 상수는 햄버거를 포장하는 일을 합니다. 함께 일을 하는 다른 직원들이 햄버거에 들어갈 재료를 조리해 주면 조리된 순서대로 상수의 앞에 아래서부터 위로 쌓이게 되고, 상수는 순서에 맞게 쌓여서 완성된 햄버거를 따로 옮겨 포장을 하게 됩니다. 상수가 일하는 가게는 정해진 순서(아래서부터, 빵 – 야채 – 고기 - 빵)로 쌓인 햄버거만 포장을 합니다. 상수는 손이 굉장히 빠르기 때문에 상수가 포장하는 동안 속 재료가 추가적으로 들어오는 일은 없으며, 재료의 높이는 무시하여 재료가 높이 쌓여서 일이 힘들어지는 경우는 없습니다. 예를 들어, 상수의 앞에 쌓이는 재료의 순서가 [야채, 빵, 빵, 야채, 고기, 빵, 야채, 고기, 빵]일 때, 상수는 여섯 번째 재료가 쌓였을 때,..
[알고리즘] 올바른 괄호
·
알고리즘
들어가며 Stack - JavaScript를 먼저 공부한 다음 푼 문제입니다. 바로 풀리지 않거나 설명이 필요하다면 참고하는 것을 추천드립니다. 문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져..
[알고리즘] Stack - JavaScript
·
알고리즘/풀이 힌트
스택? Last In First Out 개념을 가지고 있는 선형 자료구조이다. 마지막에 들어간 요소가 먼저 나오는 방식의 자료구조이다. 자료를 넣는 것을 Push, 빼는 것을 Pop이라고 부른다. 스택의 동작 원리 스택의 동작 원리는 간단하다. Push와 Pop 밖에 가능한 행동이 없기 때문에 그것이 끝이다. 스택 자료구조의 사용처 스택 자료구조를 사용하는 가장 대표적인 곳은 스택 메모리이다. 스택 메모리는 함수가 호출되면 생성되는 지역변수와 매개변수가 저장되는 메모리다. sum 함수가 실행되면 스택 메모리에 지역 변수, 반환 주소값과 매개 변수가 저장된다. 실행 후 함수가 종료되면 Pop이 실행되어 스택 메모리에서 사라진다. 이어서 print 함수가 실행된다. 함수가 실행되면 내부에 있는 console..
[알고리즘] 짝지어 제거하기
·
알고리즘
문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한사항 문자열의 길이 : 1,000,000이하의 자연수 문자열은 모두 소문자로 이루어져 있습니다. ..
[알고리즘] Stack ( 스택 )
·
알고리즘/풀이 힌트
Stack : 데이터를 일시적으로 저장하기 위한 자료구조 가장 먼저 들어온 데이터가 가장 마지막에 나가는 자료구조 ( FILO : First In Last Out) ex) 택배 상하차 : 택배차에 택배를 처음 넣은 것이 제일 마지막에 나온다. ​ Stack을 코드로 구현해보자면 import java.util.ArrayList; public class StackEx { public static void main(String[] args) { // TODO 자동 생성된 메소드 스텁 Stack s = new Stack(); for(int i = 1; i