Algorithm/BOJ(Baekjoon Online Judge)

[백준 - 17363번] 우유가 넘어지면? - Java //Wello Horld//

koucop 2019. 8. 6. 14:41

이번에는 BOJ의 17363번 문제 "우유가 넘어지면?" 을 풀어보도록 하자

위에 나와 있는 그림과 같이, "우유" 를 넘어 뜨려서 "아야"로 만들면 되는 문제이다.입력으로 주어지는 문자열들을 요리조리 잘 재배치 시키고, 문제에 나와 있는 표를 활용해서 풀면 된다.

성공한 코드는 아래와 같다.

import java.io.*;
import java.util.*;

public class sample {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        char[][] input = new char[N][M];
        for(int i = 0; i < N; i++){
            String line = br.readLine();
            for(int j = 0; j < M; j++){
                input[i][j] = line.charAt(j);
            }
        }

        for(int i = M - 1; i >= 0; i--){
            for(int j = 0; j < N; j++){
                bw.write(reverse(input[j][i]));
            }
            bw.write("\n");
        }

        bw.flush();
        br.close();
        bw.close();
    }
    public static char reverse(char c){
        if(c == '-') return '|';
        if(c == '|') return '-';
        if(c == '/') return '\\';
        if(c == '\\') return '/';
        if(c == '^') return '<';
        if(c == '<') return 'v';
        if(c == 'v') return '>';
        if(c == '>') return '^';
        return c;
    }
}

 

문제 : https://www.acmicpc.net/problem/17363

 

17363번: 우유가 넘어지면?

첫 줄에 그림의 세로 길이와 가로 길이를 의미하는 정수 N과 M(1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에 걸쳐 그림의 각 줄을 의미하는 M글자의 문자열이 하나씩 주어진다. 문자열은 공백을 포함하지 않으며 위의 표에 주어진 문자로만 이루어져 있음이 보장된다.

www.acmicpc.net