오늘은 오랜만에 코딜리티 문제를 풀었다.
코딜리티에 가면 코스가 있고, 코스를 통해서 차근차근 문제풀이를 할 수 있다.
코딜리티 쓰면서 늘 좋았던거는 푼 문제에 대해 상세한 정보를 제공한다는 것이다...
대강 이렇게?ㅋㅋㅋㅋㅋ
그리고 밑에는 hidden test case도 보여줘서 좋다...
코딜리티를 3년 전였나? 그때 처음 봤었는데 그때는 시간/공간 복잡도에 대해서 신경 안쓰고 코딩/PS할 때라서 코딜리티에서 빠꾸 엄청 먹었다...ㅋㅋㅋㅋㅋ
이젠 복잡도에 대해서도 생각하면서 문제를 풀기도 하고,
뭔가 프로그래머스나 백준 문제만 풀다보니 기본적인 부분들을 잊어버리는 기분이라서 코딜리티를 좀 다시 시작해볼까 한다.
(프로그래머스나 백준 문제도 좋지만 뭔가 문제가 너무 화려하다고 해야할까..?ㅋㅋㅋ)
문제는 간략하게 주어진 수 N을 이진수로 변환했다.
이진수는 문자열 형태로 저장해두고,
문자열을 앞에서부터 탐색하면서 1이 나타날때마다 gap을 구했다.
그리고 문자열의 index 0은 무조건 1이다.
class Solution {
public int solution(int N) {
String binary = "";
while(N != 0) {
binary = (N % 2) + binary;
N /= 2;
}
int answer = 0;
int target = 0;
for(int i = 1; i < binary.length(); i++) {
if(binary.charAt(i) == '1') {
int diff = i - target - 1;
if(answer < diff) {
answer = diff;
}
target = i;
}
}
return answer;
}
}