제코베 JS 100제

    제코베 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라면, 즉 닫는괄..

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

    수학공식이 제대로 입력이 되었는지 판단하는 코드를 작성하려 합니다. 괄호는 소괄호밖에 없습니다. /** * 수학공식을 입력받아 괄호가 제대로 입력되었는지 판단하는 함수 * @param {String} e 수학공식 * @returns {String} 옳다면 "True", 아니라면 "False" 리턴 */ function math(e) { let tmp = 0; for (el of e) { if (el === '(') tmp += 1; else if (el === ')') tmp -= 1; if (tmp < 0) return 'False'; } return tmp === 0 ? 'True' : 'False'; } const ex = '5 + 7) * (3 * 5)'; const result = math(ex..