티스토리 뷰

반응형

 

 

해커랭크 Day 29일 챌린지를 시작해보자. 😆

 

벌써 마지막 챌린지이다!!

 

길고 길었던 챌린지의 끝이 보여

기쁘기도 하지만!

 

아직 끝나지 않았기에

일단 공부를 계속하자,, (진정진정)

 

Day 29의 tutorial 강의에서는

여러 가지 프로그래밍 언어로

함수, 변수 등을 선언하는 방법을 배웠다.

 

딱히 진행한 소스코드는 없기에

바로 문제풀이 포스팅을 진행한다.

 

 


 

오늘의 조건은 다음과 같다.

/*
입력 : n,k
문제 : 1~n까지 중에서 모든 두 숫자의 조합으로
 &연산자 수행 후 최댓값 중 k보다 작은 값 출력
 */

 

 

 

우리가 구현해야할 메서드를 자세히 살펴보자.

public static int bitwiseAnd(int N, int K) {
    // Write your code here
    int res = 0;
    for(int i=1; i<=N; i++) { // 1~N까지 순회하면서
        for(int j=i+1; j<=N; j++) { // j=i+1로 시작하는 것이 중요
            int ans = i&j; // &연산 수행하고
            if(ans>res && ans<K) { 
                // if문 통해  1~n까지 중에서 모든 두 숫자의 조합 최댓값 중 
                // k보다 작은 값을 res(출력변수)에 담음. 
                res = ans;
            }
        }
    }
    return res;
}

 

 

주석을 상세히 써두었으므로

어렵지 않게 이해할 수 있을 것이다.

(만약 모르는 부분이 있다면 댓글로 질문해주길 바란다.)

 

그럼 주석 설명을 포함한 오늘의 전체 소스코드를 살펴보자. 👇

 

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;

class Result {


    /*
    입력 : n,k
    문제 : 1~n까지 중에서 모든 두 숫자의 조합으로
     &연산자 수행 후 최댓값 중 k보다 작은 값 출력
     */
    /*
     * Complete the 'bitwiseAnd' function below.
     *
     * The function is expected to return an INTEGER.
     * The function accepts following parameters:
     *  1. INTEGER N
     *  2. INTEGER K
     */

    public static int bitwiseAnd(int N, int K) {
        // Write your code here
        int res = 0;
        for(int i=1; i<=N; i++) { // 1~N까지 순회하면서
            for(int j=i+1; j<=N; j++) { // j=i+1로 시작하는 것이 중요
                int ans = i&j; // &연산 수행하고
                if(ans>res && ans<K) {
                    // if문 통해  1~n까지 중에서 모든 두 숫자의 조합 최댓값 중
                    // k보다 작은 값을 res(출력변수)에 담음.
                    res = ans;
                }
            }
        }
        return res;
    }

}

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        int t = Integer.parseInt(bufferedReader.readLine().trim());

        IntStream.range(0, t).forEach(tItr -> {
            try {
                String[] firstMultipleInput = bufferedReader.readLine().replaceAll("\\s+$", "").split(" ");

                int count = Integer.parseInt(firstMultipleInput[0]);

                int lim = Integer.parseInt(firstMultipleInput[1]);

                int res = Result.bitwiseAnd(count, lim);

                bufferedWriter.write(String.valueOf(res));
                bufferedWriter.newLine();
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            }
        });

        bufferedReader.close();
        bufferedWriter.close();
    }
}

&연산자를 수행하는 부분에 있어서 어려움을 느껴

다음의 사이트를 참고했다.

(출처 - 글자 클릭 시 이동)

 

 

 


 

 

길고 길었던 30일 챌린지가 드디어 끝이 났다!! 🥳

 

 

30일 완주!

 

 

뿌듯 😆

 

긴 챌린지를 완주하면서 느꼈던 감정들과

하고 싶은 말들이 많은데

이 포스팅은 문제 풀이 포스팅이므로

조만간 해커랭크 30일 챌린지 완주 및 회고 포스팅으로 다시 찾아오겠다!!

(개발자식 유머 - 객체지향 클린코드(하나의 포스팅은 하나의 기능만,,,,,,,,,😂)

 

반응형