달달한 스토리

728x90
반응형

https://st-lab.tistory.com/78

 

[백준] 2775번 : 부녀회장이 될테야 - JAVA [자바]

https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다. (1 <=..

st-lab.tistory.com

 

 

 

우선 문제풀이를 한 출처를 올린다..

 

어우.,. 너무 어렵다.

 

양심적으로 문제를 풀고, 올리고 싶은데 아직 실력이 미숙한 탓이라,

 

문제를 이해하고 답안을 그냥 올리는 것 같아..

 

올릴지 말지 고민하다가.. 그래도 공부 기록은 남기자는 마음에 글을 써본다.

 

10250

 

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

public class Test10250 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringBuilder sb = new StringBuilder();
        int T = Integer.parseInt(br.readLine());	// 테스트 케이스

        for (int i = 0; i < T; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");

            int H = Integer.parseInt(st.nextToken());
            st.nextToken();			// W 는 그냥 버린다.
            int N = Integer.parseInt(st.nextToken());

            if (N % H == 0) sb.append((H * 100) + (N / H)).append('\n');
            else sb.append(((N % H) * 100) + ((N / H) + 1)).append('\n');
        }
        System.out.print(sb);
    }
}

나 같은 경우는 모든 경우에 수를 다 체크하기 위해 if문을 난잡하게 코드를 작성하였는데,

 

그렇게 작성하니.. 왜 내가 이렇게 짰는지 기억도 못할 정도로 복잡해졌다.

 

문제풀이를 보니 간단명료하게 푼것을 보고 현타가 왔다...ㅠㅠ 그래도 이해는 했으니 다행이다.

 

2755

 

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

public class Test2775 {
    public static int[][] APT = new int[15][15];

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int cnt = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();

        make_APT();

        for (int i = 0; i < cnt; i++) {
            int k = Integer.parseInt(br.readLine());
            int n = Integer.parseInt(br.readLine());
            sb.append(APT[k][n]).append('\n');
        }

        System.out.println(sb);
    }

    private static void make_APT() {
        //초기화
        for(int i = 0; i < 15; i++) {
            APT[i][1] = 1; //각층 1호는 다 1
            APT[0][i] = i; //0층 1,2,3,4~~ 넣어준다.
        }

        for (int i = 1; i < 15; i++) { // 1층부터 14층까지
            for (int j = 2; j < 15; j++) { // 2호부터 14호까지
                APT[i][j] = APT[i - 1][j] + APT[i][j - 1];
            }
        }
    }
}

기본수학 편으로 가면서 난이도가 급상승하였는데,

 

2차원 배열이 나와 당황했다.

 

아무리 봐도 내가 풀 수 있는 방법이 없는 듯했다.

 

처음에는 문제에 대한 이해를 하지 못해 애쓰다가 결국 답을 보았다..

 

다행히 이 문제를 풀면서 2차원 배열에 대해 조금 이해도를 높일 수 있었다.

 

코딩 테스트 분발하자...

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading