PS
제코베 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..
제코베 JS 100제 / 81 / 지뢰찾기
지뢰를 찾는 문제입니다. 다음 그림처럼 깃발 주위에는 지뢰가 사방으로 있습니다. 깃발의 위치를 입력받아 지뢰와 함께 출력 해주는 프로그램을 만드세요. 아래 Case 외 예외 사항은 고려하지 않습니다. (예를 들어 깃발이 붙어 있을 경우는 고려하지 않습니다.) 실력이 되시는 분들은 깃발이 붙어있을 상활까지 고려해 주세요. /** * 탐색할 인덱스가 범위를 벗어나지 않는지 확인하는 함수 * * @param {Number} searchX 탐색할 행 * @param {Number} searchY 탐색할 열 * @param {Number} MAX_ROW 최대 행의 수 * @param {Number} MAX_COL 최대 열의 수 * @returns {Boolean} 유효하면 true, 유요하지 않으면 false *..
제코베 JS 100제 / 80 / 순열과 조합
조합이란 원소들을 조합하여 만들 수 있는 경우의 수이며 원소의 순서는 신경 쓰지 않습니다. 순열이란 원소의 값이 같더라도 순서가 다르면 서로 다른 원소로 취급하는 선택법입니다. 한글의 자모 24자 중 자음은 총 14개입니다. 이 중 입력받은 자음을 n개를 선택하여 나올 수 있는 모든 조합과, 조합의 수를 출력하고 싶습니다. '한글 맞춤법'의 제 2장 제4항에서는 한글의 기본 자모 24자 "ㄱ(기역), ㄴ(니은), ㄷ(디귿), ㄹ(리을), ㅁ(미음), ㅂ(비읍), ㅅ(시옷), ㅇ(이응), ㅈ(지읒), ㅊ(치읓), ㅋ(키읔), ㅌ(티읕), ㅍ(피읖), ㅎ(히읗), ㅏ(아), ㅑ(야), ㅓ(어), ㅕ(여), ㅗ(오), ㅛ(요), ㅜ(우), ㅠ(유), ㅡ(으), ㅣ(이)"를 제시 나올 수 있는 모든 조합을 아래..
제코베 JS 100제 / 79 / 순회하는 리스트
다음의 값이 주어졌을 때 n번 순회를 결정합니다. 예를 들어 2번 순회면 여기서 변하기 전 원소와 변한 후 원소의 값의 차가 가장 작은 값을 출력하는 프로그램을 작성하세요. 예를 들어 2번 순회했을 때 변하기 전의 리스트와 변한 후의 리스트의 값은 아래와 같습니다. 순회전 리스트 = [10, 20, 25 ,27, 34, 35, 39] 순회후 리스트 = [35, 39, 10, 20, 25, 27, 34] 리스트의 차 = [25, 19, 15, 7, 9, 8, 5] 39와 변한 후의 34 값의 차가 5이므로 리스트의 차 중 최솟값입니다. 따라서 39와 34의 인덱스인 6과 39와 34를 출력하는 프로그램을 만들어주세요. /** * 오른쪽으로 한칸 이동하는 순회 후, * * 원래의 값과 순회후의 값이 가장 작..