PS/제코베 JS 100제
제코베 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를 출력하는 프로그램을 만들어주세요. /** * 오른쪽으로 한칸 이동하는 순회 후, * * 원래의 값과 순회후의 값이 가장 작..
제코베 JS 100제 / 78 / 원형 테이블
기린은 중국집에서 친구들과 만나기로 하고, 음식을 시켰습니다. 음식이 나오고 한참을 기다렸지만 만나기로 한 친구 2명이 오지 않았어요. 기린은 배가 너무 고파 혼자 음식을 먹기 시작합니다. 원형 테이블에는 N개의 음식들이 있습니다. 한 개의 음식을 다 먹으면 그 음식의 시계방향으로 K 번째 음식을 먹습니다. 하지만 아직 오지 않은 친구들을 위해 2개의 접시를 남겨야 합니다. 마지막으로 남는 음식은 어떤 접시인가요? /** * 첫 번째 가져가는 음식이 K 번째 음식이며 * * 나머지는 첫 번째 음식으로부터 시계방향으로 가져간다 * * @param {Number} N 음식의 개수 * @param {Number} K 먹은 음식 다음으로 K번째 음식을 먹는다 * @returns {Number[]} 남은 음식들의..
제코베 JS 100제 / 77 / 가장 긴 공통 부분 문자열
가장 긴 공통 부분 문자열(Longest Common Subsequence)이란 A, B 두 문자열이 주어졌을 때 두 문자열에 공통으로 들어 있는 요소로 만들 수 있는 가장 긴 부분문자열을 말합니다. 여기서 부분문자열이란 다른 문자열에서 몇몇의 문자가 빠져 있어도 순서가 바뀌지 않은 열을 말합니다. 예를 들어 S1 = ['T', 'H', 'I', 'S', 'I', 'S', 'S', 'T', 'R', 'I', 'N', 'G', 'S'] S2 = ['T', 'H', 'I', 'S', 'I', 'S']라는 두 문자열이 있을 때 둘 사이의 부분 공통 문자열의 길이는 ['T', 'H', 'I', 'S', 'I', 'S']의 6개가 됩니다. 이처럼 두 문자열이 주어지면 가장 긴 부분 공통 문자열의 길이를 반환하는 ..