본문 바로가기
PS/BOJ

[자바] 백준 22935 - 이진 딸기 (boj java)

by Nahwasa 2022. 5. 1.

문제 : boj22935

 

  우선 이 문제를 풀기 위해 알아야 하는 2가지 정보를 확인해보자.

 

A. 1부터 15까지 출력해야 하는 문자열

  미리 전처리로 만들어두면 된다! 이하 코드에서 init()이 이 역할을 한다. 비트연산을 사용해 문제에서 제시된 대로 문자열을 만들어주면 된다. 1부터 15까지를 전부 만들어보면 다음과 같다.

 

B. 이제 입력으로 들어온 N이 'A' 중 뭐에 해당하는지를 확인하면 된다.

  이건 나머지 연산을 사용해서 쉽게 구할 수 있다. 아래 코드를 참고해보자. 

 

 

코드 : github

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    String[] arr;

    private void init() {
        arr = new String[16];
        for (int i = 1; i <= 15; i++) {
            StringBuilder tmp = new StringBuilder();
            for (int j = 3; j >= 0; j--) {
                tmp.append((i&1<<j)!=0 ? "딸기":"V");
            }
            arr[i] = tmp.toString();
        }
    }

    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        init();
        int t = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        while (t-->0) {
            int n = Integer.parseInt(br.readLine()) - 1;
            n%=28;
            n++;
            if (n<=15) {
                sb.append(arr[n]).append('\n');
            } else {
                sb.append(arr[30-n]).append('\n');
            }
        }
        System.out.print(sb);
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}

댓글