반응형

Hacker Rank 10

HackerRank - Merge Sort: Counting Inversions

카테고리 Sorting 문제 설명 문제의 목표는 다음과 같습니다. 주어진 배열을 합병 정렬하여 정렬된 배열을 생성합니다. 정렬 과정에서 발생하는 역전의 수(두 요소의 순서가 뒤바뀐 경우)를 계산합니다. 해결책 이 문제를 해결하기 위해 합병 정렬을 사용할 수 있습니다. 합병 정렬은 분할 정복 알고리즘의 일종으로, 주어진 배열을 반으로 나눈 뒤 정렬하고 다시 합병하는 과정을 반복합니다. 아래는 Python으로 작성된 구현 예제입니다. def mergeSort(arr): if len(arr)

HackerRank - Fraudulent Activity Notifications

카테고리 Sorting 문제 설명 문제의 목표는 다음과 같습니다. 주어진 일련의 거래 기록을 사용하여 일정 기간 동안의 거래가 부정 거래인지 여부를 확인합니다. 거래의 부정 여부는 해당 거래를 기준으로 이전 일정 기간 동안의 거래의 중간값을 계산하여 판단합니다. 만약 현재 거래의 금액이 중간값의 두 배 이상이라면 해당 거래는 부정 거래로 간주합니다. 부정 거래로 간주되는 거래의 수를 반환해야 합니다. 해결책 이 문제를 해결하기 위해 다음과 같은 단계를 따를 수 있습니다. 이전 일정 기간 동안의 거래를 추적하기 위해 크기가 d인 정수 배열 expenditures를 사용합니다. expenditures 배열의 처음 d개의 요소를 사용하여 초기 중간값을 계산합니다. 거래 기록을 순회하면서 각 거래가 부정 거래인..

HackerRank - Sorting: Comparator

카테고리 Sorting 문제 설명 문제의 목표는 다음과 같습니다. 주어진 정수 배열을 비교 함수에 따라 정렬합니다. 비교 함수는 두 개의 인자를 받아 비교한 결과를 반환해야 합니다. 정렬 결과는 주어진 비교 함수에 따라 오름차순으로 정렬되어야 합니다. 해결책 이 문제를 해결하기 위해 비교 함수를 구현할 수 있습니다. 비교 함수는 두 개의 인자를 받아 비교한 결과를 반환해야 하며, 오름차순으로 정렬되도록 결과를 반환해야 합니다. 아래는 Python으로 작성된 구현 예제입니다. def comparator(a, b): # a와 b를 비교하여 정렬 순서를 결정합니다. # a가 b보다 작을 경우 -1을 반환합니다. # a가 b보다 클 경우 1을 반환합니다. # a와 b가 같을 경우 0을 반환합니다. if a[1]..

HackerRank - Mark and Toys

카테고리 Sorting 문제 설명 문제의 목표는 다음과 같습니다. 주어진 정수 배열과 예산을 가지고, 최대한 많은 수의 장난감을 살 수 있는 경우의 수를 찾습니다. 각 장난감의 가격은 정수 배열에 포함되어 있으며, 예산 이내에서만 구매할 수 있습니다. 해결책 이 문제를 해결하기 위해 다음과 같은 단계를 따를 수 있습니다. 정수 배열을 정렬합니다. 장난감을 구매하기 위해 예산을 초과하지 않는 한도 내에서 가격을 더합니다. 이때, 구매한 장난감의 수를 카운트합니다. 만약 가격을 더했을 때 예산을 초과하게 되면 구매를 중지하고 카운트된 장난감의 수를 반환합니다. 아래는 Python으로 작성된 구현 예제입니다. def maximumToys(prices, k): prices.sort() total = 0 coun..

HackerRank - Sorting: Bubble Sort

카테고리 Sorting 문제 설명 문제의 목표는 다음과 같습니다. 주어진 정수 배열을 오름차순으로 정렬합니다. 정렬에 사용되는 버블 정렬 알고리즘을 구현해야 합니다. 해결책 이 문제를 해결하기 위해 버블 정렬 알고리즘을 구현할 수 있습니다. 버블 정렬은 인접한 두 요소를 비교하여 필요에 따라 위치를 교환하는 과정을 반복하여 정렬을 수행합니다. 아래는 Python으로 작성된 구현 예제입니다. def countSwaps(a): n = len(a) swaps = 0 for i in range(n): for j in range(n-1): if a[j] > a[j+1]: a[j], a[j+1] = a[j+1], a[j] swaps += 1 print("Array is sorted in", swaps, "swaps..

HackerRank - Count Triplets

카테고리 Dictionaries and Hashmaps 문제 설명 문제의 목표는 다음과 같습니다. 주어진 정수 배열에서 등비 수열을 이루는 세 요소의 개수를 찾습니다. 등비 수열은 첫 번째 요소를 선택하고, 두 번째 요소는 첫 번째 요소의 r배, 세 번째 요소는 두 번째 요소의 r배로 이루어집니다 해결책 이 문제를 해결하기 위해 다음과 같은 단계를 따를 수 있습니다. 정수 배열을 딕셔너리 count에 저장합니다. count 딕셔너리는 각 요소의 개수를 저장합니다. 결과를 저장할 변수 result를 초기화합니다. 정수 배열을 순회하며 다음 작업을 수행합니다. 현재 요소를 arr[i]라고 하고, 두 번째 요소를 찾기 위해 arr[i] * r을 계산합니다. arr[i] * r이 count 딕셔너리에 있는 경우..

HackerRank - Sherlock and Anagrams

카테고리 Dictionaries and Hashmaps 문제 설명 문제의 목표는 다음과 같습니다. 주어진 문자열에서 서로 다른 문자의 조합으로 만들어진 애너그램 쌍의 개수를 찾습니다. 해결책 이 문제를 해결하기 위해 다음과 같은 단계를 따를 수 있습니다. 문자열 내 모든 부분 문자열에 대해 반복합니다. 각 부분 문자열을 정렬한 후, 정렬된 부분 문자열을 키(key)로 사용하여 해시 테이블에 저장합니다. 이때, 정렬된 부분 문자열이 이미 해시 테이블에 있는 경우, 해당 값에 1을 추가합니다. 해시 테이블의 모든 값에 대해 다음 작업을 수행합니다. 각 값이 n(n-1)/2 개의 애너그램 쌍을 나타내므로, 해당 값을 이용하여 애너그램 쌍의 개수를 계산합니다. 아래는 Python으로 작성된 구현 예제입니다. f..

HackerRank - Two Strings

카테고리 Dictionaries and Hashmaps 문제 설명 문제의 목표는 다음과 같습니다. 주어진 두 개의 문자열 중, 어느 하나에 속한 문자가 다른 문자열에도 속하는지 확인합니다. 속한 문자가 있다면 "YES"를 반환하고, 없다면 "NO"를 반환해야 합니다. 해결책 이 문제를 해결하기 위해 다음과 같은 단계를 따를 수 있습니다. 첫 번째 문자열에 포함된 모든 문자를 세트(set)로 변환하여 저장합니다. 두 번째 문자열의 각 문자에 대해 다음 작업을 수행합니다. 해당 문자가 첫 번째 문자열에 속한다면, "YES"를 반환합니다. 두 번째 문자열의 모든 문자를 확인한 후에도 "YES"를 반환하지 않았다면, "NO"를 반환합니다. 아래는 Python으로 작성된 구현 예제입니다. def twoString..

HackerRank - Hash Tables: Ransom Note

카테고리 Dictionaries and Hashmaps 문제 설명 문제의 목표는 다음과 같습니다. 주어진 두 개의 리스트를 비교하여 첫 번째 리스트의 단어로 두 번째 리스트의 단어를 구성할 수 있는지 확인합니다. 단어는 정확히 일치해야 하며, 첫 번째 리스트에서 단어를 사용하는 빈도는 두 번째 리스트에서 단어를 사용하는 빈도보다 크거나 같아야 합니다. 해결책 이 문제를 해결하기 위해 해시 테이블을 사용하여 다음과 같은 단계를 따를 수 있습니다. 빈 딕셔너리 magazine_dict를 초기화하여 랜섬 노트의 단어를 저장합니다. magazine 리스트의 모든 단어에 대해 반복하면서 다음 작업을 수행합니다. magazine_dict 딕셔너리에서 해당 단어의 개수를 1 증가시킵니다. ransom 리스트의 모든 ..

HackerRank - Frequency Queries

카테고리 Dictionaries and Hashmaps 문제 설명 문제의 목표는 다음과 같습니다. 주어진 리스트를 기반으로 작업을 수행합니다. 작업에는 요소를 추가하거나 삭제하는 것이 포함됩니다. 주어진 쿼리에 대해 요소의 빈도에 따라 결과를 반환해야 합니다. 해결책 이 문제를 해결하기 위해 다음과 같은 단계를 따를 수 있습니다. 빈 딕셔너리 num_freq를 초기화하여 리스트의 각 요소의 빈도를 저장합니다. 빈 딕셔너리 freq_count를 초기화하여 특정 빈도로 요소를 가진 개수를 저장합니다. 주어진 작업을 반복하면서 다음 작업을 수행합니다. 작업이 1일 경우: 해당 요소의 빈도를 증가시킵니다. freq_count 딕셔너리에서 해당 빈도의 개수를 1 증가시킵니다. 해당 요소의 이전 빈도가 0보다 크면..

반응형