반응형

Problem Solved

    [HackerRank][Javascript] Array - New Year Chaos

    문제 New Year Chaos 문제 설명 놀이기구를 기다리는 줄에서 뇌물이 최소 몇 번 오갔는지 구하는 문제. (단, 한 사람이 뇌물을 3번 이상 준 경우는 Too chaotic을 결과로 해야 한다.) 문제 이해가 어려워 솔루션을 찾아보고 이해하는 방식을 택했다. 입력값은 뇌물로 인해 순서가 뒤섞인 배열이고, 출력값은 숫자 또는 문자열이다. 우선 뇌물을 주고받았는지를 찾기 위해 q의 길이만큼 반복문을 돈다. 한 사람이 뇌물을 3번 이상 줬다면 자신의 원래 위치보다 3 이상 앞에 있을 것이다. 이것을 바탕으로 q[i]는 현재 위치, i + 1은 원래 위치로 두고 3 이상이면 Too chaotic을 반환하도록 한다. 카오식하지 않다면 현재 위치보다 1 또는 2 작은 위치에서 뇌물을 주고받은 사람이 있는지 ..

    [HackerRank][Javascript] Arrays: Left Rotation

    문제 Arrays: Left Rotation 문제 설명 1차원 배열이 전해진 숫자만큼 오른쪽으로 회전하도록 만드는 문제. leetcode의 rotate array 문제보다 덜 까다로운 문제이다. leetcode에서는 추가 메모리를 사용하면 안됐기 때문에 하나씩 떼어서 붙여주는 방식을 택했다. 이번 문제는 splice를 시켜 바로 concat으로 붙여 주어 간단하게 해결했다. 단, 문제의 입력값 중에 d가 a의 길이보다 크다면 나머지 값으로 계산하는 등의 예외 처리는 해 주면 더 좋을 것 같다. 일단 나는 통과과 되어서 따로 해 주지는 않았다. 성공 코드 const rotLeft = (a, d) => a.concat(a.splice(0, d));

    [HackerRank][Javascript] 2D Array - DS

    문제 2D Array - DS 문제 설명 2차원 6 * 6 배열에서 나올 수 있는 모래시계 중에서 가장 큰 합을 구하는 문제 6 * 6 배열에서 모래시계는 4 * 4 = 16개가 나온다. 모든 모래시계의 합을 구하기 위해 이중 반복문을 이중 배열보다 2보다 작은 길이만큼 돌 수 있게 한다. 이중 반복문 안에서 모래시계의 합을 구해 result보다 크면 result에 저장시키고 반복문이 끝나면 반환한다. 성공 코드 function hourglassSum(arr) { let result = -100; for (let i = 0; i < arr.length - 2; i++) { for (let j = 0; j < arr.length - 2; j++) { let sum = arr[i + 1][j + 1]; fo..

    [HackerRank][Javascript] Repeated String

    문제 Repeated String 문제 설명 a라는 문자가 반복되는 횟수를 구하는 문제 처음에 문제를 제대로 읽지 못해 a가 아닌 가장 많은 횟수를 구하는 문제로 착각하고 풀어 헤맸다. 정규식을 활용해 기본 문자열에서의 a의 개수를 구한다. 몫과 나머지를 구하고, 몫을 위에서 구한 a의 개수와 더해준다. 나머지만큼 반복문을 돌면서 나머지에서 a이면 result를 1씩 더해 준다. 최종적인 result 값을 반환하면 정답이 나온다. 성공 코드 function repeatedString(s, n) { const aCount = (s.match(/a/g) || []).length; const quotient = Math.floor(n / s.length); const remainder = n % s.lengt..

    [HackerRank][Javscript] Counting Valleys

    문제 Counting Valleys 문제 설명 골짜기에 내려갔다가 도로 원래 위치로 올라오는 횟수를 구하는 문제 문제 조건 입력되는 문자열에서 U는 1씩 올라가는 것, D는 1씩 내려가는 것을 표현한다. 그림에 있는 평행선은 시작하는 지점, 즉 0을 의미한다. 시작 지점(0)에서 올라갔다가 내려와서 0이 되는 것은 count에 포함되지 않는다. 문제 조건을 따라 처음에는 U와 D를 조건문으로 나눠 1씩 더하거나 빼 주었다. count(풀이에서는 result)가 적용되기 위해서는 시작 지점에서 내려갔다가 올라와서 다시 0이 되어야 한다. 그러므로 U이면서 시작 지점일 때 count를 1씩 늘려 주면 답이 나온다. 성공 코드 function countingValleys(n, s) { const stringL..

    [HackerRank][Javascript] Jumping on the Clouds

    문제 Jumping on the Clouds 문제 설명 0만 건널 수 있는 구름이 가질 수 있는 최소 이동 횟수를 구하는 문제 실패한 풀이 설명 문제에서 건널 수 있는 구름의 조건은 한 번에 2개까지의 구름만 넘을 수 있다는 것과 1의 구름은 무조건 건너뛴다는 것이다. 첫 풀이가 실패한 이유는 두 개의 조건에서 건너뛴다의 조건을 코드로 적지 못해서이다. 조건을 나름대로 적었지만 건너뛰지 않고 동떨어진 jump라는 변수만 0~2 사이를 왔다갔다 하게 된다. 성공한 풀이 설명 if문의 늪에 빠져서 팀원들과 stackoverflow의 도움으로 문제를 다시 풀고 이해하려고 노력했다. 가장 중요한 것은 현재 수의 다다음 수를 검사해야 한다는 것이다. 바로 다음 수가 0인지 1인지 비교하고 0이어서 갔는데 거기서 ..