https://www.acmicpc.net/problem/1730
정답코드
import java.util.Scanner;
class Main
{
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
String command = sc.hasNext() ? sc.next() : "";
boolean[][] passVertical = new boolean[N][N];
boolean[][] passHorizontal = new boolean[N][N];
int curR = 0, curC = 0;
for (int i = 0; i < command.length(); i++) {
char cmd = command.charAt(i);
if (cmd == 'D') {
if (curR == N - 1) continue;;
passVertical[curR][curC] = passVertical[curR + 1][curC] = true;
curR++;
}
else if (cmd == 'U') {
if (curR == 0) continue;
passVertical[curR][curC] = passVertical[curR - 1][curC] = true;
curR--;
}
else if (cmd == 'L') {
if (curC == 0) continue;;
passHorizontal[curR][curC] = passHorizontal[curR][curC - 1] = true;
curC--;
}
else {
if (curC == N - 1) continue;;
passHorizontal[curR][curC] = passHorizontal[curR][curC + 1] = true;
curC++;
}
}
for (int i = 0; i < N; i++) {
String ans = "";
for (int j = 0; j < N; j++) {
if (passHorizontal[i][j] && passVertical[i][j]) ans += "+";
else if (passVertical[i][j]) ans += "|";
else if (passHorizontal[i][j]) ans += "-";
else ans += ".";
}
System.out.println(ans);
}
}
}
아래는 내가 초기에 시도했던 실패 코드( 예전에 그렷던 판화와 나중에 수직으로 겹치는 경우를 예상하지 못했음)
import java.util.*;
import java.io.*;
public class Main
{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.valueOf(br.readLine());
char[][] map = new char[n][n];
for(char[] m :map){
Arrays.fill(m,(char)46);
}
String[] input = br.readLine().split("");
int x=0;
int y=0;
String ex = "";
for(int i=0; i<input.length ;i++){
if(input[i].equals("D")){
if(x+1>=n) continue;
if(ex.equals("R")||ex.equals("L")){
map[x][y] = (char)43;
}else{
map[x][y] = (char)124;
}
x+=1;
}else if (input[i].equals("U")){
if(x-1<0) continue;
map[x-1][y] = (char) 124;
if(ex.equals("R")||ex.equals("L")){
map[x][y] = (char)43;
}else{
map[x][y] = (char)124;
}
x-=1;
}else if (input[i].equals("R")){
if(y+1>=n) continue;
map[x][y+1] = (char) 45;
if(ex.equals("U")||ex.equals("D")){
map[x][y] = (char)43;
}else{
map[x][y] = (char)45;
}
y+=1;
}else if (input[i].equals("L")){
if(y-1<0) continue;
map[x][y-1] = (char) 45;
if(ex.equals("U")||ex.equals("D")){
map[x][y] = (char)43;
}else{
map[x][y] = (char)45;
}
y-=1;
}
ex=input[i];
}
for(char[] ma :map){
for(char m :ma){
bw.write(m);
}
bw.write("\n");
}
bw.flush();
}
}
'Problem Solving > 구현' 카테고리의 다른 글
BOJ2817 ALPS식 투표 (0) | 2024.01.31 |
---|---|
BOJ2840 행운의 바퀴 (1) | 2024.01.31 |
BOJ10250 ACM 호텔 (0) | 2024.01.31 |
BOJ3085 사탕 게임 (1) | 2024.01.30 |
BOJ11068 회문인수 (1) | 2024.01.30 |