Coding Test/HackerRank 12

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 ..

HackerRank 문제풀이 - 3 (Repeated String)

1. 문제 하나의 문자열(s)이 주어지고, 길이(n)가 주어질 때, 해당 문자열을 해당 길이까지 동안 반복하였을때, "a" 개수를 찾는 문제이다. 최대 길이는 1부터 10^12까지 주어질 수 있어, 계산 성능의 최적화가 필요하다. 2. 1차 풀이 2.1 풀이 과정 'use strict'; import { WriteStream, createWriteStream } from "fs"; process.stdin.resume(); process.stdin.setEncoding('utf-8'); let inputString: string = ''; let inputLines: string[] = []; let currentLine: number = 0; process.stdin.on('data', function..

반응형