PS/제코베 JS 100제

    제코베 JS 100제 / 88 / 지식이의 게임 개발

    지식이는 게임을 만드는 것을 좋아합니다. 하지만 매번 다른 크기의 지도와 장애물을 배치하는데 불편함을 겪고 있습니다. 이런 불편함을 해결하기 위해 지도의 크기와 장애물의 위치, 캐릭터의 위치만 입력하면 게임 지형을 완성해 주는 프로그램을 만들고 싶습니다. 지식이를 위해 게임 지형을 만드는 프로그램을 작성해 주세요. - 가로(n), 세로(m)의 크기가 주어집니다. - 지형의 테두리는 벽으로 이루어져 있습니다. - 캐릭터가 있는 좌표가 배열 형태로 주어집니다. - 장애물이 있는 좌표가 2차원 배열 형태로 주어집니다. 지도는 n * m 크기의 배열이며 배열 안의 값은 - 움직일 수 있는 공간(0) - 캐릭터(1) - 벽(2) 3개로 구분되어 있습니다. /** * 지도의 크기, 장애물의 위치, 캐릭터의 위치를 ..

    제코베 JS 100제 / 87 / 천하제일 먹기 대회

    천하제일 먹기 대회가 개최되었습니다. 이 대회는 정해진 시간이 끝난 후 음식을 먹은 그릇 개수를 파악한 후 각 선수들의 등수를 매깁니다. 1. 같은 이름의 선수는 없습니다. 2. 접시의 수가 같은 경우는 없습니다. /** * 음식을 먹은 그릇 개수를 파악한 후 각 선수들의 등수를 얻는 함수 * * @param {string[]} PLAYER_ARR 각 선수의 이름이 담긴 배열 * @param {number[]} DISH_COUNT_ARR 각 선수가 먹은 음식 그릇 개수가 담긴 배열 * @returns {object} key:선수, value:등수 를 가지는 object return */ function getRank(PLAYER_ARR, DISH_COUNT_ARR) { let rank = []; let ..

    제코베 JS 100제 / 86 / 회전 초밥

    쉔은 회전 초밥집에 갔습니다. 초밥집에 간 쉔은 각 초밥에 점수를 매기고 낮은 점수의 순서로 초밥을 먹으려 합니다. 이때 n위치에 놓여진 초밥을 먹고자 할 때 접시가 몇 번 지나가고 먹을 수 있을지 출력하세요. 초밥은 놓여진 위치에서 옮겨지지 않습니다. 지나간 초밥은 나머지 초밥이 지나간 후에 다시 돌아옵니다. 초밥은 1개 이상 존재합니다. 예) A, B, C, D, E 초밥이 있고 각 점수가 1, 1, 3, 2, 5 일 때 3번째(C초밥)을 먹게 되는 순서는 점수가 1인 초밥 A와 B를 먹고 다음으로 점수가 2인 D 초밥을 먹어야 A B C D E 순서로 접시가 도착하지만 C가 도착했을때 먹지 못하는 상황이 옵니다. 2점을 주었던 D를 먼저 먹어야 C를 먹을 수 있습니다. 즉, A B C D E C 의..

    제코베 JS 100제 / 85 / 숫자놀이

    일정한 규칙을 가지고 있는 숫자를 나열하는 놀이를 하는 중입니다. 이전 숫자에서 각 숫자의 개수를 나타내어 숫자로 만들고 다시 그 숫자를 같은 규칙으로 만들며 나열합니다. 이 놀이는 1부터 시작합니다. 다음 수는 1이 1개이기 때문에 '11'이 되고, '11'에서 1이 2개이기 때문에 그다음은 '12'가 됩니다. 즉, 1 -> (1) 11 -> (1이 1개) 12 -> (1이 2개) 1121 -> (1이 1개 2가 1개) 1321 -> (1이 3개 2가 1개) 122131 -> (1이 2개 2가 1개 3이 1개) 132231 -> (1이 3개 2가 2개 3이 1개) 위와 같이 진행되는 규칙을 통해 진행 횟수 N을 입력받으면 해당되는 수를 출력하세요. /** * 이전 숫자에서 각 숫자의 개수를 나타내어 숫..

    제코베 JS 100제 / 84 / 숫자뽑기

    소정이는 어떤 숫자에서 k개의 수를 뽑았을 때 가장 큰 수를 찾는 놀이를 하고 있습니다. 예를 들어, 숫자 1723에서 두 개의 수를 뽑으면 [17, 12, 13, 72, 73, 23]을 만들 수 있습니다. 이 중 가장 큰 수는 73입니다. 위 예시처럼 어떤 수 n에서 k개의 수를 선택하여 만들 수 있는 수 중에서 가장 큰 수를 찾아 주세요. /** * 어떤 수 N에서 K개의 수를 선택하여 만들 수 있는 수 중에서 * * 가장 큰 수를 반환하는 함수 * @param {Number} N * @param {Number} K * @returns {Number} 가장 큰 수 */ function pickNumber(N, K) { return parseInt( N.toString() // 문자열로 변환 .spli..

    제코베 JS 100제 / 83 / 수학 괄호 파싱 2

    수학공식이 제대로 입력이 되었는지 판단하는 코드를 작성하려 합니다. 괄호는 소괄호와 중괄호가 있습니다. 입출력 예시 /** * 소괄호와 중괄호가 있는 수학공식이 제대로 괄호의 짝이 맞는지 반환하는 함수 * @param {String} e 수학공식 * @returns {String} 옳으면 'True', 틀리면 'False' return */ function math(e) { let stack = []; const BUCKET_PAIR = { '(': ')', '{': '}', }; for (el of e) { // BUCKET_PAIR의 key라면, 즉 여는괄호라면 스택에 push if (el in BUCKET_PAIR) stack.push(el); // BUCKET_PAIR의 value라면, 즉 닫는괄..