본문 바로가기
[Hackerrank] Hackerrank in a string (java) 주어진 문자열 내에 "Hackerrank" 문자열이 존재하는지 판별하라. ex] Haabcckdeerfrgankp --> 결과 OK ex] Hackerrnk --> 결과 NO Easy, 90% 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 package algo_hackerrank; import java.util.Stack; public class HackerrankInAString { //.. 2019. 12. 16.
[Hackerrank] FairRations (java) 사람들에게 빵을 나누어준다. 특정 사람에게 빵을 나누어줄 땐, 그 사람과 그사람 앞 혹은 뒷 사람에게 같이 나누어 주어야한다. 빵은 한 번에 2사람에게 한 개 씩 나누어 준다. 빵을 나누어줬을 때, 모든 사람이 짝수개의 빵을 들고 있으려면 빵을 몇개 나누어주여야 하는가? int[] arr = {1, 2, 2, 1} 위와 같은 배열이 있을 때, arr[0] 사람은 빵 1개 arr[1] 사람은 빵 2개 arr[2] 사람은 빵 2개 arr[3] 사람은 빵 1개 를 가지고 있다는 의미. 0, 1 번째 사람에게 빵을 나누어준다. (2 3 2 1) 1, 2 번째 사람에게 빵을 나누어준다. (2 4 3 1) 2, 3 번째 사람에게 빵을 나누어준다. (2 4 4 2) 총 6개의 빵을 나누어주었으므로 결과값은 6. ※ .. 2019. 12. 8.
[Hackerrank] Strong Password (java) 문자 n이 주어졌을 때, 문자 n이 숫자 최소 한개, 알파벳소문자 최소 한개, 알파벳대문자 최소 한개, 특수문자 "!@#$%^&*()-+" 중 최소 한개, 최소길이 6 이상 이라는 조건을 만족하기 위해 추가로 필요한 문자 수를 구하라. Easy, 90%, link : https://www.hackerrank.com/challenges/strong-password/problem 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 .. 2019. 11. 28.
이진탐색 알고리즘 (binary search algorithm) (java) 오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘. 처음 중간의 값을 임의의 값으로 선택하여, 그 값과 찾고자 하는 값의 크고 작음을 비교하는 방식. 처음 선택한 중앙값이 만약 찾는 값보다 크면 그 값은 새로운 최댓값이 되며, 작으면 그 값은 새로운 최솟값이 된다. 검색 원리상 정렬된 리스트에만 사용할 수 있다는 단점이 있지만, 검색이 반복될 때마다 목표값을 찾을 확률은 두 배가 되므로 속도가 빠르다는 장점이 있다. ※ 정렬이 되어 있어야 한다. ※ 탐색대상 정렬 크기가 매 회 절반으로 줄어드므로, 시간 복잡도는 O(logn). 참고 : https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A7%84_%EA%B2%80%EC%83%89_%EC%95%8C%EA%B3%A0.. 2019. 11. 26.
시간복잡도 문제의 사이즈가 커질수록 최고 차항의 차수가 결과에 가장 많은 영향을 미친다. 시간 복잡도에 가장 큰 영향을 미치는 차항으로 시간복잡도를 나타내는 것을 Big-O 표기법(Big-O Notation) 이라고한다. (O 는 Order 로 읽는다) [ Big-O 표기법의 종류 ] 1. O(1) - Constant >입력되는 데이터 양과 상관없이 일정한 실행 시간 >알고리즘이 문제 해결을 위해 오직 한 단계만 거침 2. O(log N) - Logarithmic >데이터 양이 많아져도 시간이 조금씩 늘어난다. >시간에 비례하여 탐색 가능한 데이터양이 2의 n승이 된다. >문제 해결하는데 필요한 단계들이 연산마다 특정 요인에 의해 줄어든다. >만약 입력 자료 수에 따라 실행 시간이 이 logN 의 관계를 만족한다면.. 2019. 11. 24.
[Hackerrank] Chocolate Feast (java) 총 가진 돈 n, 초콜릿 하나의 가격 c, 초콜릿 하나를 먹으면 초콜릿 껍질 한 개가 생기고 초콜릿 껍질 m 개를 초콜릿 1개로 교환 할 수 있다. n, c, m 이 주어졌을 때 먹을 수 있는 총 초콜릿 갯수를 구하라. ex] 6, 2, 2 1. 초콜릿 3개 (6/2) 2. 초콜릿 3개를 먹어 껍질 3개가 나옴 3. 껍질 3개 중 2개를 초콜릿 1개와 교환 (껍질 1개 남음) 4. 초콜릿 1개를 먹어 껍질 1개가 나옴 5. 3번에서 남았던 껍질 1개와 4번의 껍질 1개를 합쳐 총 껍질 2개, 이를 초콜릿 한 개와 바꿈 6. 더 이상 수행 할 수 있는 교환이 없으므로 종료. 7. 총 초콜릿은 1, 3, 5 에서 얻은 5개. Easy, 90%, link : https://www.hackerrank.com/c.. 2019. 11. 23.
[Hackerrank] Sherlock and Squares (java) int a, int b 가 주어졌을 때, a 와 b 사이의 제곱정수?(square integers)의 갯수를 구하라 Easy, 84%, link : https://www.hackerrank.com/challenges/sherlock-and-squares/problem 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 import java.io.*; import java.math.*; import java.security.*; import java.text.*; import jav.. 2019. 11. 23.
[Hackerrank] Sparse Arrays (java) 비교대상문자열을 담고있는 strings 배열과 기준문자열을 담고있는 queries 배열이 있다. 기준문자열 queries 배열 내의 문자가 비교대상문자열 strings 배열에 얼마나 들어있는지, 갯수를 순서대로 반환하라. Medium, 96%, link : https://www.hackerrank.com/challenges/sparse-arrays/problem 2019. 11. 21.
[Hackerrank] Recursion : Fibonacci Numbers (java) Easy, ?%, link : https://www.hackerrank.com/challenges/ctci-fibonacci-numbers/problem 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 import java.util.*; public class Solution { public static int fibonacci(int n) { // a b c // a b c // a b c // 0 1 1 2 3 5 8 int a = 0; int b = 1; int c = 1; if(n 2019. 11. 20.
[Hackerrank] Left Rotation (java) 길이 l 의 배열 arr을 왼쪽으로 m번 이동시킨다. ex] int[] arr = {1, 2, 3, 4, 5}; int m = 2; result : {3, 4, 5, 1, 2} Easy, 87%, link : https://www.hackerrank.com/challenges/array-left-rotation/problem 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 import java.io.*; import java.math.*; import java.security.*; import java... 2019. 11. 19.