본문 바로가기

JavaScript

(24)
[LV2] 마법의 엘리베이터 문제 설명마법의 세계에 사는 민수는 아주 높은 탑에 살고 있습니다. 탑이 너무 높아서 걸어 다니기 힘든 민수는 마법의 엘리베이터를 만들었습니다. 마법의 엘리베이터의 버튼은 특별합니다. 마법의 엘리베이터에는 -1, +1, -10, +10, -100, +100 등과 같이 절댓값이 10c (c ≥ 0 인 정수) 형태인 정수들이 적힌 버튼이 있습니다. 마법의 엘리베이터의 버튼을 누르면 현재 층 수에 버튼에 적혀 있는 값을 더한 층으로 이동하게 됩니다. 단, 엘리베이터가 위치해 있는 층과 버튼의 값을 더한 결과가 0보다 작으면 엘리베이터는 움직이지 않습니다. 민수의 세계에서는 0층이 가장 아래층이며 엘리베이터는 현재 민수가 있는 층에 있습니다.마법의 엘리베이터를 움직이기 위해서 버튼 한 번당 마법의 돌 한 개를 ..
구현 - 왕실의 나이트 문제 설명 체스판은 8x8 크기이며, 나이트는 L자 형태로만 이동 가능. 수직으로 2칸 이동 후 수평으로 1칸 이동 또는 수평으로 2칸 이동 후 수직으로 1칸 이동 행 위치는 1부터 8, 열 위치는 a부터 h까지로 나타냄 이때 나이트가 이동할 수 있는 경우의 수를 계산 문제 조건 첫째줄에 8x8 좌표 평면상에서 현재 나이트가 위치한 곳의 좌표를 나타내는 두 문자로 구성된 열이 입력된디 입력 예시 a1 출력 : 2 평행 이동이 아니라 그 좌우로 또는 상하로 2칸 움직인 후 다시 상하 또는 좌우로 1칸 움직이는 방식이었다. 아이디어 : 여타 이동 문제와 비슷하게, 이동한 후의 좌표가 체스판 밖으로 넘어간다면 이동하지 않고, 체스판 안쪽이라면 이동 상하 이동과 좌우 이동이 반드시 함께 하기 때문에 2차원 배열..
구현 구현이란? 헷필드는 ENTP, 언쟁을 좋아하는 달변가이다. 하지만 이런 헷필드에게는 아주 큰 약점이 있었으니... 바로 당황하면 머릿속이 하얘진다는 것! 어느날, 헷필드는 학교를 대표하여 토론대회에 나가게 되었다. 상대는 영혼의 라이벌 머스테인! 헷필드는 늘 머스테인을 상대로 이겼었던지라 대본 따위는 전혀 준비하지 않았고, 마침내 토론대회 날이 밝았다. 언제나 그랬듯 머스테인을 조목조목 두드려 패며 승기가 헷필드 쪽으로 기운 상황. 갑자기 머스테인이 헷필드가 예상했던 범위 바깥의 반박을 시전하였다!! 당황한 헷필드... 물론 똑똑한 헷필드는 바로 논점을 간파하고 반박의 반박을 준비하는데.. 이미 한번 하얘진 머릿속은 제대로 돌아가지 않았다. 무슨 말을 해야 할지는 알겠는데, 어떻게 말해야 할지 전혀 정리..
그리디 알고리즘 - 숫자 카드 게임 문제 설명 숫자 카드가 NxM개 존재. 뽑을 카드가 있는 행에서 카드를 한장 선택 뽑은 카드는 해당 행에서 가장 작은 수를 가진 카드여야 함 최종적으로 가장 높은 수를 뽑는 사람이 이기는 게임 문제 조건 첫째줄에 행의 개수 N과 열의 개수 M이 주어지며, 각 자연수는 공백으로 구분한다. (1 ≤ N, M ≤ 100) 둘째부터 N개의 줄에 걸쳐 카드의 적힌 숫자가 주어진다. 각 숫자는 1부터 10000까지의 자연수이다. 입력 예시 3 3 3 1 2 4 1 4 2 2 2 출력 : 2 NxM 배열 형태로 놓여있는 카드들을 각 행별로 하나씩 골라 가장 큰 수를 찾는 문제이다. 단, 각 행에서 가장 작은 수를 골라야 한다. 아이디어 : 각 행별로 최솟값들을 모은 뒤, 그 중에서 최댓값을 구함 최솟값 = Math...
그리디 알고리즘 - 큰 수의 법칙 문제 설명 다양한 수 N개로 이루어진 배열이 있을 때, 이 수들을 M번 더해 가장 큰 수를 만드는 법칙 특정 인덱스에 해당하는 수가 연속해서 K번을 초과해서 더해질 수 없음 문제 조건 첫째줄에 N(2 ≤ N ≤ 1000), M(1 ≤ M ≤ 10000)M, K(1 ≤ K ≤ 10000)가 주어지며, 각 자연수는 공백으로 구분한다 둘째줄에 N개의 자연수가 주어진다. 각 자연수는 공백으로 구분한다. 단 각각의 자연수는 1 이상 10000 이하의 수로 주어진다 입력으로 주어지는 K는 M보다 항상 작거나 같다 입력 예시 5 8 3 2 4 5 4 6 출력 : 46 N개의 수들을 M번 더해 가장 큰 수를 만드는 문제였다. 단, 같은 수는 K번 이상 더할 수 없다. 아이디어 : 배열 내에서 가장 큰 수들을 더함 제한..
그리디 알고리즘(탐욕법) 그리디 알고리즘이란? 욕심쟁이 플랜트와 착한 페이지는 치킨메이트이다. 늘 둘이 함께 다니며, 이 건실하고 재능있는 청년들은 1인 1닭 정도는 가뿐히 처리할 수 있다. 오늘도 어김없이 치킨을 먹으러 간 플랜트와 페이지. 둘은 언제나 그랬듯 플랜트가 가장 좋아하는 양념치킨과 페이지가 좋아하는 파닭을 시켰다. 하지만 가는날이 장날이라고, 하필 튀김기 1대가 망가져 오늘은 치킨이 한마리씩 나온다고 한다. 어쩔 수 없지, 두 청년은 시원한 맥주를 시켜놓고, 먼저 나온 파닭을 먹기 시작했다. 그런데 아뿔싸! 늘 두마리를 나눠먹다가 한마리를 먹으니 욕심쟁이 플랜트의 본성이 드러나고야 말았다. 두 다리를 허겁지겁 먹어 치우더니 급기야 날개, 가슴살, 심지어 야들야들한 허벅지살까지!! 혼자 낼름 먹어치워버린 것이다 !!..
[LV1] 햄버거 만들기 마침 햄버거를 시킨 참인데 잘 됐다.문제 설명햄버거 가게에서 일을 하는 상수는 햄버거를 포장하는 일을 합니다. 함께 일을 하는 다른 직원들이 햄버거에 들어갈 재료를 조리해 주면 조리된 순서대로 상수의 앞에 아래서부터 위로 쌓이게 되고, 상수는 순서에 맞게 쌓여서 완성된 햄버거를 따로 옮겨 포장을 하게 됩니다. 상수가 일하는 가게는 정해진 순서(아래서부터, 빵 – 야채 – 고기 - 빵)로 쌓인 햄버거만 포장을 합니다. 상수는 손이 굉장히 빠르기 때문에 상수가 포장하는 동안 속 재료가 추가적으로 들어오는 일은 없으며, 재료의 높이는 무시하여 재료가 높이 쌓여서 일이 힘들어지는 경우는 없습니다.예를 들어, 상수의 앞에 쌓이는 재료의 순서가 [야채, 빵, 빵, 야채, 고기, 빵, 야채, 고기, 빵]일 때, 상수..
splice() splice() 이름 종류 기능 매개변수 splice() 함수 배열 내용 변경 정수, 문자, 배열 splice는 배열의 요소를 건드려 배열의 내용을 바꾸는 함수이다. 배열 요소 추가, 변경 및 삭제가 가능하며, 각 기능을 따로, 또 동시에 사용할 수 있다. 매개변수로는 정수, 문자, 배열을 모두 사용할 수 있고, 리턴 형태는 배열. splice(시작 인덱스, 삭제할 인덱스 수, 추가할 요소1, 추가할 요소2, ....) 주의할 점은 매개변수의 맨 처음 2개는 반드시 정수여야 한다는 것이다. 이는 splice()가 매개변수로 받는 인자의 역할 때문인데, splice() 함수는 배열의 요소 추가 및 삭제가 가능하기 때문에 추가할 인덱스와 삭제하는 인덱스를 모두 기재해 주어야 하기 때문이다. 시작 인덱스 : ..