일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- searchview
- 생명주기
- 코틀린
- binding adapter
- LayoutManger
- 안드로이드스튜디오
- ActivityTestRule
- high order function
- 코딜리티
- Fragment 수동 추가
- 리사이클러뷰
- fragment
- viewholder
- IntentTestRule
- 뷰변경 감지
- ui test
- Android
- 스와이프
- 구분선
- 안드로이드13
- 안드로이드
- espresso
- Fragment에서 Activity의 함수 사용하기
- 고차함수
- adapter
- 안드로이드개발레벨업교과서
- 재사용
- Error:Execution failed for task ':app:mergeDebugResources'
- 테마 아이콘
- recyclerview
- Today
- Total
룬아님의 취중코딩
Codility 33번 ChocolatesByNumbers 본문
ChocolatesByNumbers
Two positive integers N and M are given. Integer N represents the number of chocolates arranged in a circle, numbered from 0 to N − 1.
You start to eat the chocolates. After eating a chocolate you leave only a wrapper.
You begin with eating chocolate number 0. Then you omit the next M − 1 chocolates or wrappers on the circle, and eat the following one.
More precisely, if you ate chocolate number X, then you will next eat the chocolate with number (X + M) modulo N (remainder of division).
You stop eating when you encounter an empty wrapper.
For example, given integers N = 10 and M = 4. You will eat the following chocolates: 0, 4, 8, 2, 6.
The goal is to count the number of chocolates that you will eat, following the above rules.
Write a function:
class Solution { public int solution(int N, int M); }
that, given two positive integers N and M, returns the number of chocolates that you will eat.
For example, given integers N = 10 and M = 4. the function should return 5, as explained above.
Write an efficient algorithm for the following assumptions:
- N and M are integers within the range [1..1,000,000,000].
Copyright 2009–2019 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
class Solution {
public int solution(int N, int M) {
// write your code in Java SE 8
int[] coList = new int[N];
int pos = 0;
int ans = 0;
while(coList[pos] == 0){
coList[pos] = 1;
ans++;
if(pos + M >= N) {
pos = (pos + M)%N;
}else{
pos = pos+M;
}
}
return ans;
}
}
class Solution {
public int solution(int N, int M) {
long pos = 0;
int ans =0;
while(!(pos >= N && pos%N == 0)){
pos += M;
ans ++;
}
return ans;
}
}
class Solution {
public int solution(int N, int M) {
// write your code in Java SE 8
int gcd;
long ans;
gcd = eatChocolate(N,M);
ans = N/gcd;
return (int)ans;
}
int eatChocolate(int a, int b){
if(b == 0){
return a;
}
return eatChocolate(b, a%b);
}
}
'개발 > 알고리즘' 카테고리의 다른 글
직사각형 나머지 좌표 구하기 (0) | 2020.03.11 |
---|---|
Codility 34번 CommonPrimeDivisors (0) | 2019.11.05 |
Codility 32번 CountNonDivisible (0) | 2019.10.20 |
Codility 31번 CountSemiprimes (0) | 2019.10.19 |
Codility 29번 Peaks (0) | 2019.09.30 |