Coding Test 15

HackerRank 문제풀이 - 11 (Sherlock and Anagrams)

1. 문제 문제는 다음과 같다. 한 문자열의 문자를 재배열하여 다른 문자열을 형성할 수 있는 경우 두 문자열은 서로의 애너그램 이라고 한다. 문자열이 주어졌을때, 서로의 애너그램인 문자열의 하위 문자열 쌍의 수를 찾아야 한다. 2. 1차 문제풀이 2.1 풀이 과정 function sherlockAndAnagrams(s) { let count = 0; for(let len = 1; len orgStr: ${orgStr}, compareSt..

HackerRank 문제풀이 - 10 (Two Strings)

1. 문제 문제는 다음과 같다. 두 string이 주어졌을때, 공통되는 문자가 있으면 “YES”, 없으면 “NO” 를 출력해야 한다. 2. 1차 문제풀이 2.1 풀이 과정 function twoStrings(s1, s2) { // Write your code here const splitS1 = s1.split(""); const splitS2 = s2.split(""); var result = false; splitS1.forEach((char)=>{ if(splitS2.indexOf(char) !== -1){ result = true; return; } }) return result? "YES": "NO"; } 풀이 과정은 다음과 같다. “result” 변수를 false로 초기화한다. 주어진 두 문자..

HackerRank 문제풀이 - 9 (Hash Tables: Ransom Note)

1. 문제 문제 구조는 다음과 같다. 주어진 두 A, B string 배열을 비교하여, A배열에서 단어를 완벽히 사용하여 B 배열의 문장을 완성할 수 있는지 확인하여, 그 여부를 출력하는 간단한 문제이다. 2. 문제 풀이 2.1 풀이 과정 function checkMagazine(magazine, note) { // Write your code here var result = true; note.forEach(str =>{ const idx = magazine.indexOf(str); if(idx == -1){ result = false; return; } else { magazine.splice(idx, 1); } }); console.log(result? "Yes": "No"); } 풀이 과정은 다음..

HackerRank 문제풀이 - 8 (Array Manipulation)

1. 문제 1부터 시작하는 인덱스가 지정된 배열과 연산 목록이 주어진다. 각 연산은 시작 인덱스와 끝 인덱스 사이에 속한 배열 요소에 일정한 값을 더하는 작업이다. 연산을 모두 수행한 후, 배열에서 가장 큰 값을 찾아 반환해야 한다. 2. 1차 문제풀이 2.1 풀이 과정 function arrayManipulation(n, queries) { // Write your code here const listLength = queries.length; console.log("n:", n); console.log("queries:", queries); console.log("listLength:", listLength); let resultList = []; for(let i = 0; i < n; i ++){ ..

HackerRank 문제풀이 - 7 (New Year Chaos)

1. 문제 임의의 배열이 주어진다. 배열 내의 숫자들은 오름차순으로 정렬되어 있어야 하지만, 일부 숫자들이 이 정렬의 규칙을 어기고 자리가 이동되어있다. 자기보다 작은 숫자로 이동할 수 있으며 이동하면 자연스레 작은숫자들은 뒤로 밀리게 된다. 만일, 본래의 자리에서 2를 초과한 만큼 벗어난 숫자가 있으면 "Too chaotic" 를 출력하고, 아니라면 각 숫자들이 자기 자리로 돌아가기 위해 몇번의 swap을 거쳐야 하는지 해당 수를 출력해야 한다. 2. 1차 문제풀이 2.1 풀이 과정 function processOrderSwap(q, lastSwapedNum){ let swapedNum = lastSwapedNum; //console.log(`processOrderSwap >> q: ${q}`); if..

HackerRank 문제풀이 - 7 (Minumum Swaps 2)

1.문제 임의의 숫자들을 담은 랜덤 길이의 배열이 주어진다.(숫자들은 중복되지 않는다.) 해당 배열이 1부터 arr.length-1 까지 순차적으로 정렬되게 해야한다. 정렬은 배열 내 항목들을 swap하는 방식으로 이루어진다. 최소한으로 몇번의 swap을 해야 정렬이 완성되는지 구하는 문제이다. 2. 문제풀이 2.1 풀이 과정 function minimumSwaps(arr) { let swapedNum = 0; for(let i = 0; i < arr.length; i++){ const correctNum = i + 1; if(arr[i] != correctNum){ for(let j = i; j < arr.length; j++){ if(arr[j] == correctNum){ arr[i] = arr.s..

HackerRank 문제풀이 - 6 (Left Rotation)

1.문제 임의의 배열(a)과 배열의 요소들이 왼쪽으로 얼만큼 쉬프트할지 숫자(d)가 정해진다. 가장 낮은 인덱스의 아이템은 가장 높은 인덱스로 이동하게 된다. 쉬프트가 끝난 배열을 리턴으로 넘기면 된다. 2. 풀이 2.1 풀이 과정 function rotLeft(a, d) { // Write your code here let tempArr = []; for(let i = d; i < a.length; i++){ tempArr.push(a[i]); } for(let i = 0; i < d; i++){ tempArr.push(a[i]); } return tempArr; } 풀이 방법은 다음과 같다. 주어진 배열(a)에서 쉬프트값(d)부터 배열의 길이까지 빈 배열(tempArr)에 넣는다. 그 후, 주어빈 배..

HackerRank 문제풀이 - 5 (2D Array - DS)

1. 문제 임의의 2차원 배열(6x6)이 주어진다. 위의 문제에서 주어진 패턴에 해당하는 인덱스의 값들을 모두 더한다. 각 패턴별 더한 값들중 가장 높은 값을 결과로 도출한다. 2. 1차 풀이 2.1 풀이 과정 function hourglassSum(arr) { // Write your code here let hourGlassSumArr = []; const maximumMoveXYPos = 4; for (let yPos = 0; yPos < maximumMoveXYPos; yPos++) { for (let xPos = 0; xPos < maximumMoveXYPos; xPos++) { let sum = arr[xPos][yPos] + arr[xPos + 1][yPos] + arr[xPos + 2][y..

HackerRank 문제풀이 - 4 (Jumping on the Clouds)

1. 문제 구름의 값(0, 1)이 들어있는 무작위 배열이 주어진다. 0은 밟을수 있는 구름이고, 1은 밟을 수 없는 구름이다. 첫번째 구름과 마지막 구름은 무조건 밟을수 있는 구름이다. 점프를 한 칸이나 두 칸을 할 수있다. 마지막 구름까지 최소 몇번의 점프를 해야 도달할 수 있는지 구하면 된다. 2. 풀이 2.1 풀이 과정 function jumpingOnClouds(c) { // Write your code here // const tokens = c.split("\n"); // const size = tokens[0]; // const list = tokens[1].split(","); // const list = c.split(","); const list = c; let currentIndex ..

[2022 KAKAO BLIND RECRUITMENT] 양궁대회

세번째 프로그래머스 문제 풀이이다. 모든 경우의 수 전수조사 로직이 들어가야 했어서, 여태 했었던 모의 코딩테스트 문제중에 가장 어려웠다. 2022 KAKAO BLIND RECRUITMENT > 양궁대회 풀러가기 1. 문제 1.1 문제 설명 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원회는 한 선수의 연속 우승보다는 다양한 선수들이 양궁대회에서 우승하기를 원합니다. 따라서, 양궁대회 운영위원회는 결승전 규칙을 전 대회 우승자인 라이언에게 불리하게 다음과 같이 정했습니다. 어피치가 화살 n발을 다 쏜 후에 라이언이 화살 n발을 쏩니다. 점수를 계산합니다. 과녁판은 아래 사진..

반응형