주 1회 회사 동기들이랑 알고리즘 스터디를 진행하고 있다.
현재 진행하고 있는 스터디는 오프라인 코딩테스트로도 많이 활용하고 있는 Codility.
각자 풀고 자기가 푼 소스를 리뷰하는 형식인데, 뜻 깊고 보람도 있고 참으로 도움이 많이 된다 :)
뛰어나진 않지만 각 단원 별로 100% 만들기 위해 노력 중이고, 기록 및 공유하기 위해 글을 작성한다.
바로가기 >Codility >BinaryGap
문제 해석 : 입력받은 정수 N을 2진수로 바뀐 뒤, 1 과 1 사이에 존재하는 0 의 최대 개수를 리턴하는 문제
문제 풀이 : 정수 N 을 2진수로 변환한 뒤 한 글자 씩 비교하여 0이면 zeroCnt 를 계속 더하다가, 1을 만나면 Array 에 zeroCnt 를 넣어준다.그렇게 Array 에 누적된 값 중 가장 큰 값을 리턴.
import java.util.*;
class Solution {
public int solution(int N) {
// 2진수 값
String binary = Integer.toBinaryString(N);
ArrayList<Integer> result = new ArrayList<Integer>();
int zeroCnt = 0;
for (String word : binary.split("")) {
if (word.equals("0")) {
zeroCnt++;
} else {
result.add(zeroCnt);
zeroCnt = 0;
}
}
return Collections.max(result);
}
}
반응형
'Self Dev. > Codility' 카테고리의 다른 글
[Codility] TapeEquilibrium 100% (0) | 2019.09.08 |
---|---|
[Codility] PermMissingElem 100% (0) | 2019.09.08 |
[Codility] FrogJmp 100% (0) | 2019.09.08 |
[Codility] CyclicRotation 100% (0) | 2019.09.07 |
[Codility] OddOccurrencesInArray 100% (0) | 2019.09.07 |
댓글