\_우연히 코딩테스트 준비를 하다가 해커랭크라는 사이트에 접하게 되었다. 하루에 쉬운 문제는 많게는 5개씩, 어려운 문제는 분석 및 블로그 업로그까지 2 ~ 3개 까지만 진행 해보려고 한다.Print the ratios of positive, negative and z
우선 python으로 문제를 해결한다면 훨씬 간편해질 것 같다는 생각은 python 유저라면 누구나 생각했을 것 같다. 하지만 나는 c++로 지금 문제를 해결하려고 하고 있기 때문에 좀 고민을 해봤다. 가장 짧을 문자열을 앞에 오게 정렬을 한 후에 정련된 값에 for
문제 설명제한사항 입출력 예우선 체육복을 잃어버린 학생의 번호 -> lost체육복 여분을 가진 학생의 번호 -> reserve입력으로 n명의 학생을 받는다.제한사항으로 도난당한 학생의 수는 1명 이상 n명 이하이고 중복되는 번호가 없다고 한다. 그리고 여벌의 체육복을
그리디 알고리즘을 이용해서 문제에 접근해야한다는 생각은 당연히 했다. (c++문자열은 오랜만에 써서 한번 정리를 해놔야겠다.) 우선 for문의 인덱스로 왼쪽에서 오른쪽으로 넘어가는 방식으로 하면 좋을 것 같다는 생각을했다. 그리고 각각의 인덱스 안에서 문자열은 주어진
숫자를 들어온 순서를 그대로 유지한 채로 k개의 숫자를 제거해서 가장 큰 숫자를 만들면 된다. 만약에 원래 4자리 숫자에서 k = 2일때는 결국 2자리 십진수를 찾아야하므로 00으로 초기화된 문자열에서 비교하면서 만약에 number의 인덱스의 숫자가 더 크면 그 다음
코드1에서 하나의 테스트 케이스가 안돌아 가는 문제가 발생했다.Input40801 234 536 747 172 590 833 847 509 429 666 411 609 894 348 254 814 767 647 965 711 801 852 781 972 390 218
플로리스트가 자신의 이윤을 극대화 하기 위해서 가격에 소비자가 원래 꽃의 갯수에 1을 다하여 파는 식이다.예를 들어서 (0+1) x original price 다음 꽃의 가격은 (1 + 1) x original price 이런식으로 계산한다. 예를 들어서 만약에 k는
문제출처내가 뽑을 숫자의 갯수 k와 배열 arr이 주어진다.배열에 있는 숫자중 k개를 아무거나 뽑아서 arr'이라고 한다. unfairness = max(arr') - min(arr')unfairness의 최소값을 추출하는 문제이다. 쉽게 말해서 원래 배열arr = 1
문제 출처하나의 테스트 케이스가 틀렸다고 나오는데 어느 부분이 잘못됐는지 모르겠다. 테스트 케이스가 엄청 길어서 조금 비교해봤는데 답이 다르게 나오진 않는데 왜이러는지 모르겠당..
우선 문제에 대한 설명을 간략히 하자면 k는 전력을 공급할 수 있는 범위라고 생각하면 된다. reachable < k, k보다 작은 distance에 위치한 인덱스에는 전력 공급이 가능하다. 이런 규칙 때문에 탐욕 알고리즘에 의해서 결정할 수 있는데 순차적으로 인
문제 출처오름차순으로 정렬을 해주면 각각 자기 차례가 올때까지 최소 합 시간이 걸리기 때문에 오름차순으로 정렬을 해준후 자기 순서까지 더한 값의 합을 계산해서 출력을 해주면 될 것 같다.
문제 출처동적 프로그래밍을 이용하여 문제를 해결하면 좋겠다는 생각을 우선 했다.예시를 들어서 설명을 해보면,입력 값73 10 05 20 11 10 21 20 32 15 44 40 52 200 6i가 시작 인덱스라고 했을 때, //i는 커서 같은 역할i = 0에서 시작t
동적 프로그래밍을 이용하여 문제의 규칙성을 파악하고 문제의 규칙성에 맞는 코드를 작성해야 된다고 생각했다. 메모이제이션을 이용하여 피보나치 수열을 기록하고 수열이 기록되지 않았을때는 0으로 초기화 된 값을 앞서 계산된 값을 이용하여 계산을 O(n) 복잡도를 갖게 된다.
문제 출처1, 2, 3을 이용하여 입력으로 받은 값의 합을 구하는 경우의 수를 계산해야 한다. 1을 계산하는 경우의 수=> 1가지2을 계산하는 경우의 수1 + 12=> 2가지3을 계산하는 경우의 수1 + 1 + 12 + 11 + 23=> 4가지T1 + T3 / T24를
문제 출처우선 일정한 규칙성을 찾아줘야한다.0123456789102021303132404142 - 1843 1944 2050 2151 2252 2353 2454 25....210321310320이런 패턴만 봐도 앞자리 숫자는 전에 계산을 해뒀던 숫자들에 각각 자릿수가
//1 1 1 2 2 3 4 5 7 9//1 2 3 4 5 6 7 8 9 10p(5) = p(0) + p(4)p(6) = p(1) + p(5)p(7) = p(2) + p(6)p(8) = p(7) + p(3)p(9) = p(8) + p(4)p(10) = p(9) + p(
문제 출처조합으로 계산해야 한다는 사실을 알 수 있다. 그러므로 Combination을 이용하면 되는데 combination만을 이용하면 시간초과가 뜨기 때문에nCm = n-1Cm-1 + n-1Cm공식을 이용해준다!
처음에 내가 난독이 있는건지 문제를 해석하는것 조차 헷갈렸다..우선 인덱스를 넘겨주는 기준이 되는 포문 하나와 기준의 뒤에 남은 인덱스 중에서 기준보다 작은 값을 가진다면 내림차순으로 바뀌는 타이밍에 포문을 빠져나오는 방식으로 코드를 짜봤다.위 코드는 그냥 쉽게 현재
문제 출처브루트 포스 알고리즘을 이용해야 하기 때문에 모든 노드에 한 번씩 다 접근하는 방식을 이용해야만 했다. 선형 탐색을 이용했고 재귀로 문제를 구현했을 때 segmentation fault나 indexing 문제도 자주 일어나기 때문에 중첩 for loop을 세개
문제 출처주어진 N에서 부터 인덱스를 하니씩 줄여가면서 생성자가 되는 것들만 vector에 저장한 후에 마지막에 vector중에서 최소를 출력해주기만 하면된다.선형 탐색을 이용하지만 N/2보다 작은 값은 절대 생성자가 될 수 없기 때문에 중간까지만 탐색하게 만든다.
문제 출처우선 부르트 포스 알고리즘을 사용해야 하는데 가장 어려웠던 것이 범위를 설정하는 것이었다. 쉽게 말해서 입력이 예를 들어서 13x13으로 들어왔다고 가정한다면, O O O O O O O O O O O O OO O O O O O O O O O O O OO O O