제코베 JS 100제

    제코베 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개가 됩니다. 이처럼 두 문자열이 주어지면 가장 긴 부분 공통 문자열의 길이를 반환하는 ..

    제코베 JS 100제 / 76 / 안전한 땅

    전쟁이 끝난 후, A 나라에서는 폐허가 된 도시를 재건하려고 한다. 그런데 이 땅은 전쟁의 중심지였으므로 전쟁 중 매립된 지뢰가 아직도 많이 남아 있다는 것이 판명되었다. 정부는 가장 먼저 지뢰를 제거하기 위해 수색반을 꾸렸다. 수색반은 가장 효율적인 지뢰 제거가 하고 싶다. 수색반은 도시를 격자무늬로 나눠놓고 자신들이 수색할 수 있는 범위 내에 가장 많은 지뢰가 매립된 지역을 가장 먼저 작업하고 싶다. 가장 먼저 테스트 케이스의 수를 나타내는 1이상 100 이하의 자연수가 주어진다. 각 테스트 케이스의 첫 줄에는 수색할 도시의 크기 a와 수색반이 한 번에 수색 가능한 범위 b가 주어진다. (a와 b 모두 정사각형의 가로 또는 세로를 나타낸다. 예를 들어 10이 주어지면 10x10칸의 크기를 나타낸다.)..