티스토리 뷰

반응형

 

Hackerrank challenges Day 10 을 진행해보자.

오늘은 강의 포스팅은 진행하지 않겠다!

 

강의를 수강하지 않은 것은 아니나

강의 내용이 2진수의 설명과

2의 보수 진법?(1의 보수, 2의 보수,,)에 해당하는 설명이 진행되어

며칠 전 cs50 강의를 들으며

2진수에 대해 학습했기 때문에

(학교 수업, 교양 수업 등 2진수는 이미 많이 알고있었기 때문에)

따로 포스팅하지 않으려 한다.

 

그래서 바로 코드 리뷰를 진행하겠다.

 

 

Day 10 결과

 


위에서 설명했다 싶이 2진수에 관한 문제였다.

 

10진수의 숫자가 주어지면

2진수로 그 수를 표현했을 때

연속되는 1의 갯수를 출력하는 문제였다.

 

가장 많이 연속된 1의 갯수를 출력하면 되는 문제였는데

필자의 경우 처음에 조금 복잡하게 생각했다.

 

입력받은 10진수를 2진수로 변환해 arraylist에 넣고

그 값들을 비교하면서 max를 찾으려 했으나

그렇게 생각하지 않아도 됐다!

 

코드를 보며 마저 설명하겠다.

 

package day10;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Test {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine().trim());
        br.close();
        int count = 0;
        int max =0;
        while(n>0) {
            if(n%2==1) {
                count++;
                if(count > max) max = count;
            }
            else count = 0;
            n /= 2;
        }
        System.out.println(max);
    }
}

 

 

arraylist를 만들 필요도 없고

그냥 while문을 반복해

n%2==1일때 count를 증가시키고

count>max가 되면 max값에 대입시키면 된다.

 

n%2==0일때는 count=0으로 초기화시키기고

n/=2로 나누어 준다.

 

마지막에 max값만 출력 시키면 되는 간단한 문제였다!

 

 

코드 자체가 어렵지 않기 때문에

전체 소스코드를 보면

딱히 이해되지 않는 부분은 없을 것이다!

 

궁금한 점은 댓글을 남겨주면 답변해드리도록 하겠다

 

 


벌써 챌린지 10까지 왔다.

주말에 시간이 된다면

Day 1 ~ Day 10까지 복습하는 기회도 가져봐야겠다.

반응형