링크 : https://codility.com/programmers/lessons/12-euclidean_algorithm/chocolates_by_numbers/ 문제> N개 들어있는 초콜렛 상자에서 M개씩 먹는다. 만약 M개씩 먹다가 초콜렛상자에 M보다 적게 남으면 다음 상자 추가 개봉. 추가 상자를 열지 않아도 될 때 멈추고 몇개의 초콜렛을 먹었는지 출력하라. 해결방법0.(정확도 100%, 퍼포먼스 75%) using System; class Solution { public int solution(int N, int M) { // write your code in C# 6.0 with .NET 4.5 (Mono) int n = N; int count = 0; while(true) { if(n < M..
링크 : https://codility.com/programmers/lessons/7-stacks_and_queues/stone_wall/ 문제> 벽을 세워야 한다. 벽은 N미터로 두께는 일정하지만 다른 장소에서는 다른 높이를 가져야한다. 벽의 높이는 N개의 양의 정수로 이루어진 배열 H. H[0]은 벽의 왼쪽 끝의 높이, H[N-1]은 벽의 오른쪽 끝의 높이이다. 벽을 구축하는데 필요한 최소 블록 수를 계산하라. 해결방법. * H[N미터] = 높이. * H[i+1]이 H[i]가 보다 크다면 벽은 점점 높아진다.(새로운 블록이 생긴다.) < 이부분을 체크하면 된다. * H[i+1]이 H[i]가 보다 작다면 벽을 닫는다. 1) 길이를 체크할 스택생성. 2) 0부터 N까지 반복. - 만약 스택이 0이면 Pu..
링크 : https://codility.com/programmers/lessons/16-greedy_algorithms/tie_ropes/ 문제> 인접한 길이의 로프끼리 이었을 때(배열 A의 인접한 값들끼리의 합을 말함), K이상의 길이가 되는 수를 구하라. 해결방법. 길이를 순차적으로 더하다가 K이상이 되면 ropeCount를 증가하고 길이를 초기화해서 반복한다. using System; // you can also use other imports, for example: // using System.Collections.Generic; // you can write to stdout for debugging purposes, e.g. // Console.WriteLine("this is a debug..
링크 : https://codility.com/programmers/lessons/10-prime_and_composite_numbers/flags/ 문제> * 배열 A에서 0 A[P+1] 인 값들을 찾아 Peak를 만든다.(중간중간 튀는 높은 값을 뽑으라는 소리) * K는 플래그(깃발) 간의 간격이자 Peak에 설치가능한 최대 플래그(깃발) 수. - K번째 플래그 사용시 두 플래그 사이의 거리는 K보다 커야한다. * 플래그 사이간격은 절대값이다. * 이때 최대 설치 가능한 플래그(깃발) 수를 구하라. 해결방법. 1) A[P-1] A[P+1]인 P를 담은 Peaks리스트를 생성. *리스트 수가 3보다 작으면 위의 식이 성립 안되기 때..
링크 : https://codility.com/programmers/lessons/4-counting_elements/missing_integer/ 문제> 주어진 배열 A에서 발생하지않은 0보다 큰 양의 정수를 반환하라. 해결방법. * A를 정렬. * HashSet로 중복제거.(퍼포먼스를 위함) * A를 리스트로 변환 후 1보다 작은 수들 제거. * 만약 A의 데이터 수가 1보다 작거나 1이 없다면 1을 반환. - 아니라면 순차적으로 누락값(A[i + 1]과 A[i]의 차가 1이상)을 찾는다. - 누락값이 없다면 A의 최종값에 +1을 해서 반환. using System; using System.Collections.Generic; class Solution { public int solution(int[..