Algorithm/Problem Solving

[BackJoon] 3076문제 상근이의체스판

Jinlib 2017. 5. 5. 17:47

문제 URL


1. 문제의 접근을 하기전에 알아야 할 정보 3가지

1) 문자열을 분리하는 방법

자세히 모른다면 참조

2) String형을 int형으로 형변환


2. 풀이

이번엔 split 메서드 말고 stringTokenizer 클래스를 사용했다.

 1) 내코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package sanggun_chess;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int [] RC = new int [2];
        int [] AB = new int [2];
        StringTokenizer st1 = new StringTokenizer(br.readLine());
        for(int i=0;i<2;i++)
            RC[i] = Integer.parseInt(st1.nextToken());
        StringTokenizer st2 = new StringTokenizer(br.readLine());
        for(int i=0;i<2;i++)
            AB[i] = Integer.parseInt(st2.nextToken());
        
        for(int R=0; R<RC[0];R++){
            for(int A =0; A<AB[0];A++){
                if((R%2)==0){
                    for(int C=0; C<RC[1]/2;C++){
                        for(int B=0; B<AB[1];B++)
                            System.out.print("X");
                        for(int B=0; B<AB[1];B++)
                            System.out.print(".");
                    }
                    if((RC[1]%2)==1){
                        for(int B=0; B<AB[1];B++)
                            System.out.print("X");
                    }
 
                }
                else{
                    for(int C=0; C<RC[1]/2;C++){
                        for(int B=0; B<AB[1];B++)
                            System.out.print(".");
                        for(int B=0; B<AB[1];B++)
                            System.out.print("X");
                    }
                    if((RC[1]%2)==1){
                        for(int B=0; B<AB[1];B++)
                            System.out.print(".");
                        }
                }
        System.out.println();
            }
        }
    }
}
 
cs

2) 해설


3. 공부

 1) 본받을 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import java.io.*;
import java.util.*;
public class Main {
    private StringBuilder sb;
    private BufferedReader br;
    private BufferedWriter bw;
    private StringTokenizer st;
    private int R, C, A, B;
    public static void main(String[] args) {
        Main app = new Main();
        app.start();
    }
 
    private void start() {
        sb = new StringBuilder();
        br = new BufferedReader(new InputStreamReader(System.in));
        bw = new BufferedWriter(new OutputStreamWriter(System.out));
        try {
            this.input();
            this.solve();
            this.output();
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }
 
    private void input() throws IOException {
        st = new StringTokenizer(br.readLine());
        R = Integer.parseInt(st.nextToken()); C = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
        A = Integer.parseInt(st.nextToken()); B = Integer.parseInt(st.nextToken());
    }
 
    private void solve() {
        for (int i = 0; i < R; i++) {
            if(i % 2 != 0){
                for (int t = 0; t < A; t++) {
                    for (int j = 0; j < C; j++) {
                        if(j % 2 != 0){
                            for (int k = 0; k < B; k++) {
                                sb.append('X');
                            }
                        }else{
                            for (int k = 0; k < B; k++) {
                                sb.append('.');
                            }
                        }
                    }
                    sb.append("\n");
                }
            }else{
                for (int t = 0; t < A; t++) {
                    for (int j = 0; j < C; j++) {
                        if(j % 2 != 0){
                            for (int k = 0; k < B; k++) {
                                sb.append('.');
                            }
                        }else{
                            for (int k = 0; k < B; k++) {
                                sb.append('X');
                            }
                        }
                    }
                    sb.append("\n");
                }
            }
        }
    }
    private void output() throws IOException {
        sb.deleteCharAt(sb.length() - 1);
        bw.write(sb.toString());
        bw.flush();
        bw.close();
    }
}
cs

 2) 해설


 3) 마무리