반응형
판화
W대학교 미술대학 조소과에서 사용하는 판화 기계를 통해 로봇 팔이 조각도를 상하좌우로 움직여 목판에 선을 그립니다. 로봇 팔의 움직임 명령에 따라 목판 위에 그려지는 패턴을 출력하는 프로그램을 작성합니다.
문제 조건
- 시간 제한: 2초
- 메모리 제한: 128MB
- 제출: 2291
- 정답: 821
- 맞힌 사람: 678
- 정답 비율: 36.237%
- 문제링크
1730번: 판화
로봇팔이 지나지 않은 점은 '.'으로, 로봇팔이 수직 방향으로만 지난 점은 '|'으로, 로봇팔이 수평 방향으로만 지난 점은 '-'으로, 수직과 수평 방향 모두로 지난 점은 '+'로 표기하도록 한다. 네 문
www.acmicpc.net
입력
- 첫 번째 줄에는 목판의 크기 N(2 ≤ N ≤ 10)이 주어집니다.
- 두 번째 줄에는 로봇 팔의 움직임 명령이 주어집니다('U', 'D', 'L', 'R'). 움직임의 최대 길이는 250입니다.
출력
- 로봇 팔이 지나지 않은 점은 '.'으로, 수직 방향으로만 지난 점은 '|'으로, 수평 방향으로만 지난 점은 '-'으로, 수직과 수평 방향 모두로 지난 점은 '+'로 표기합니다.
주요 개념
- 움직임 처리: 주어진 명령에 따라 로봇 팔을 움직이면서 수평 이동과 수직 이동을 체크합니다.
- 출력 형식 결정: 각 점을 지난 방향에 따라 적절한 문자로 출력합니다.
코드 설명 및 주석
import java.util.Scanner;
public 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);
}
}
}
반응형
'알고리즘 > 완전 탐색' 카테고리의 다른 글
[백준] ALPS식 투표 (0) | 2024.04.16 |
---|---|
[백준] 행운의 바퀴 (0) | 2024.04.11 |
[백준] ACM 호텔 (0) | 2024.04.05 |
[백준] 사탕 게임 (0) | 2024.04.04 |
[백준] 회문인 수 (0) | 2024.04.04 |