HackerRank (17) 썸네일형 리스트형 [해커랭크] (Data Structures - Arrays) Array Manipulation (javascript) 배열의 구간 최대합 구하기 에러케이스 수정 중 누적값 알고리즘 prefixSum(구간합) 발견하여 참고함 조건 n개의 배열(arr)은 인덱스가 1부터 시작 쿼리(queries)는 query를 인자를 가지는 배열로 query= [a, b, k] (이때, a,b는 index, k는 값) 주어진 두 개의 인덱스(a-b)사이에 값(k)를 추가 해당 배열의 최댓값을 반환 제한사항 3 ≤ n ≤ 10⁷ 1 ≤ m ≤ 2 * 10⁵ 1 ≤ a ≤ b ≤ n 0 ≤ k ≤ 10⁹ 나의 풀이 단순 풀이만이 아니라 생소한 구간합 이라는 알고리즘을 처리해야 하기 때문에 샘플데이터를 기반으로 풀이 n = 5, m = 3, querie는 아래와 같음 a b k 1 2 100 2 5 100 3 4 100 일반 로직대로 풀이하면 .. [해커랭크] (Data Structures - Arrays) Dynamic Array (javascript) 주어진 조건에 따른 동적 2차 배열을 생성하고 쿼리(q) 상태에 따른 처리 수행 주어진 설명이 이해가 불가능하여 해석법 검색 후 수행함 풀이를 정리하다 보니 HashTable 과 로직이 비슷한 느낌..? 규칙 및 조건 n 개의 빈 배열을 가지는 2차원 arr 이 존재하며, 모든 배열은 0으로 인덱싱 됨 lastAnswer는 초기값 0 임 주어지는 쿼리(queries)는 2개의 타입(q)을 가짐 queries는 query를 인자로 가지는 배열 query: [q, x, y] (이때 , q는 1 또는 2) query 타입별 처리법 Query: 1 x y idx 는 (x ⨁ lastAnswer) % n arr[idx]에 y 값 추가 Query: 2 x y idx 는 (x ⨁ lastAnswer) % n last.. [해커랭크] (Data Structures - Arrays) 2D array - DS; 모래시계 행렬 (javascript) 6x6 행렬의 배열이 주어질 때, 아래 모래시계배열의 합의 최댓값을 구하라 a b c d e f g 조건 입력값은 int arr[6][6] 각 배열을 순차적으로 돌면서 모래시계 배열의 합이 최댓값인 경우 반환 아래 행렬이 주어진 경우, 모래시계배열은 그림 1.과 같이 표현될 수 있음 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 2 4 4 0 0 0 0 2 0 0 0 0 1 2 4 0 제한사항 -9 ≤ arr[i][j] ≤ 9 0 ≤ i, j ≤ 5 나의 풀이 2중 배열을 단일 배열(const lines)로 변환하여 수행 n 중 배열을 단일배열화하는 법 arr.join(',').split(',') 모래시계의 배열은 3x3 배열이므로 배열길이의 -2만큼만 반복을 수행하며 행렬을 순.. [해커랭크] (Implementation Algorithms) Number Line Jumps (javascript) 캥거루 두마리가 각각 다른 위치에서 다른 속도로 점프할 경우, 같은 시간에 같은 위치에 존재하는 여부 반환 규칙 첫 번째 캥거루의 시작 위치는 x1, 이동간격은 v1 두 번째 캥거루의 시작 위치는 x2, 이동간격은 v2 ex) x1 = 0, v1 = 3 / x2 = 4, v2 = 2 제한사항 0 ≤ x1 ≤ x2 ≤ 10000 1 ≤ v1 ≤ 10000 1 ≤ v2 ≤ 10000 나의 풀이 두 번째 캥거루의 이동간격이 첫 번째 캥거루 보다 큰 경우는 평생 동일 시간대에 만날 수 없음 두 캥거루가 만날 때 까지 확인하기 위한 범위값 구하기 대략 (첫 번째 캥거루의 시작위치 + 이동간격) * (두 번째 캔거루의 시작위치 + 이동간격) 값 안에서는 구할 수 있지 않을까 생각 최소한의 범위로 구하고자 제곱근 .. [해커랭크] (Implementation Algorithms) Grading Students (javascript) 학생 등급 채점 규칙 학생이 받는 등급범위는 0~100 등급이 40보다 작은 경우 낙제 입력된 등급의 다음 5배수 값을 구하여, 그 차가 3보다 작을 경우 5배수값으로 등급 조정 등급이 38보다 작은 경우 반올림하지 않음 (계산해도 낙제이기 때문) 제한사항 1 ≤ n ≤ 60 0 ≤ grades[i] ≤ 100 나의 풀이 등급이 38보다 작은 경우 자체 점수 반환 5배수 구하기 Math.ceil({val}/5)*5; 5로 나눈 정수값 * 5 ( 반올림 - round, 올림 - ceil, 버림 - floor) 5배수와 기존 등급의 차가 3보다 작을 경우, 5배수값으로 등급 조정 아닌 경우 자체 점수 반환 // 생략 /* * Complete the 'gradingStudents' function below... [해커랭크] (Constructive Algorithms) Flipping the Matrix 2nx2n 정수 행렬 게임 2nx2n 행렬이 주어졌을 때, 행 또는 열을 뒤집어 2사분면에 위치하는(nxn) 행렬의 합의 최댓값 구하기 조건 전달되는 행렬은 반드시 2nx2n의 2차원 배열, 각 인자는 정수 제한사항 1 ≤ q ≤ 16 1 ≤ n ≤ 128 0 ≤ matrix[i][j] ≤ 4096 (단, 0 ≤ i, j ≤ 2n) 나의 풀이 문제자체를 이해하지 못하여 다른 개발자들의 풀이를 찾아봄 원본 링크: https://singo112ok.tistory.com/35 python 풀이이긴 하나, 작성한 내용을 보고 얼마나 간결하게 풀이했는지 알 수 있었음 복잡한 로직을 간단하게 풀 수 있는 해법이 기발하여 기록하고자 함 타 개발자의 풀이내용을 내가 이해한 대로 설명 그림 1. 처럼 2nx2n 행렬에서.. [해커랭크] (1 Week Day 1) Time Conversion (javascript) 주어진 12시간제의 값을 24시간제로 변환 조건 12:00:00PM은 12시간제, 12:00:00은 24시간제 표기 제한사항 입력되는 시간은 모두 유효 나의 풀이 더 간결한 코드로 만들 수 있을 것으로 보임 ':'로 구분하여 hh, mm, ss(+PM|AM)으로 파싱 hh : 12시간제 시간 mm: 분 ss: 초 HH: 24시간제 시간 PM|AM에 여부에 따라 시간계산 처리 PM hh 값이 12가 아닌경우 '12 + hh' AM hh 값이 12인 경우 '00' // 생략 /* * Complete the 'timeConversion' function below. * * The function is expected to return a STRING. * The function accepts STRING s.. [해커랭크] (1Week - Day 1) Mini-Max Sum (javascript) 주어진 배열 arr(n) 에서 n-1 개 합의 최소, 최대 구하기 조건 배열은 5개의 정수를 가짐 5개의 정수 중 4개의 정수를 선택하여 합한 값이 최소, 최대일 경우 출력 제한사항 1 ≤ arr[i] ≤ 10⁹ 나의 풀이 조합(combination, nCr)을 이용하여 풀이 for loop를 이용하여 배열 길이만큼 순환 배열에서 i 번째 값을 제외한 n-1개의 정수를 더한 값을 각각 min, max와 비교하여 출력 // 생략 /* * Complete the 'miniMaxSum' function below. * * The function accepts INTEGER_ARRAY arr as parameter. */ function miniMaxSum(arr) { // Write your code here.. 이전 1 2 3 다음