HackerRank 5

HackerRank : Davis' Staircase

문제 링크 HackerRank : Davis' Staircase (Click) 문제 요약 Davis의 집에는 계단이 많은데, Davis는 한번에 계단을 오를때 1칸, 2칸, 또는 3칸을 오를 수 있다. Davis가 n층 높이의 계단을 오를때, 몇 가지의 가지수로 계단을 오를 수 있는지 정답을 구하라. 이때 정답은 10000000007로 나눈 나머지를 출력하라. 문제 풀이 public static int stepPerms(int n) { if(n == 0) return 0; else if(n == 1) return 1; else if(n == 2) return 3; else if(n == 3) return 4; int t1 = 1; int t2 = 2; int t3 = 4; int res = 0; ..

HackerRank : Frequency Queries

문제 링크 The problem link : Frequency Queries 문제 요약 2차원 쿼리가 주어집니다. 이때 쿼리가 가진 값의 의미는 다음과 같습니다. 1 x : x를 저장 2 y : y값이 저장되어있을 경우, 제거 3 z : 빈도수(=누적된 개수)가 z인 값이 있을 경우, 1을 출력하고 그렇지 않을 경우 0을 출력 예시 코드는 다음과 같습니다. Operation Array Output (1,1) [1] (2,2) [1] (3,2) 0 (1,1) [1,1] (1,1) [1,1,1] (2,1) [1,1] (3,2) 1 문제 풀이 핵심 코드는 다음과 같습니다. static List freqQuery(List queries) { HashMap hm = new HashMap(); // 0 List a..

HackerRank : Sherlock and Anagrams (Java)

문제 링크 The problem link : Sherlock and Anagrams 문제 요약 n개의 문자열이 주어졌을때, 각 문자열마다 애너그램을 통해 서로 같은 문자열을 만들 수 있는 쌍의 개수를 찾으세요. (* 애너그램 : 재배열을 했을때 다른 뜻의 문자를 만듦) 애너그램의 예시는 다음과 같습니다. s = mom [m,m] [mo,om] -> 2개의 정답 문제 풀이 핵심 코드는 다음과 같습니다. public static void add(HashMap hm, String s){ // 3 char a[] = s.toCharArray(); Arrays.sort(a); // (1) ns = new String(a); hm.putIfAbsent(ns,0); // (2) hm.put(s, hm.get(ns)+..

HackerRank : Largest Rectangle

Largest Rectangle | HackerRank Given n buildings, find the largest rectangular area possible by joining consecutive K buildings. www.hackerrank.com 문제 요약 건물의 갯수와 각 건물의 높이가 주어집니다. 일렬로 나열된 건물에서 안정적인 사각형 지대를 찾으려고 합니다. 사각형의 값은 아래 공식으로 구합니다. k * min(h[i], h[i+1], ... , h[i+k-1]) 쉽게 말해 가장 큰 넓이를 가진 사각형이 안정적인 사각형 지대가 됩니다. 핵심 요약 위 문제는 stack, queue의 유형으로 분리되어있지만, 단순 Brute Force를 통해서도 접근이 가능합니다. 핵심을 요약하면 다..