728x90
반응형
[알고리즘] 구현 - 상하좌우 ( java )
문제: 계획서가 주어졌을 때 여행가 A가 최종적으로 도착할 지점의 좌표를 출력하는 프로그램을 작성하시오.
입력조건
- 첫째 줄에 공간의 크기를 나타내는 N이 주어진다. ( 1 <= N <= 100 )
- 둘째 줄에 여행가 A가 이동할 계획서 내용이 주어진다. ( 1 <= 이동 횟수 <= 100 )
출력조건
- 첫째 줄에 여행가 A가 최종적으로 도착할 지점의 좌표 ( X, Y )를 공백으로 구분하여 출력한다.
코드
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int x = 1;
int y = 1;
int n = scan.nextInt();
String[] compareStr = {String.valueOf('L'),String.valueOf('R'),String.valueOf('U'),String.valueOf('D')};
scan.nextLine();
String str = scan.nextLine();
String[] arr = str.split(" ");
for(int i=0;i<arr.length;i++){
if(arr[i].equals(compareStr[0])){
if(y>1){
y-=1;
}
}else if(arr[i].equals(compareStr[1])){
if(y<n){
y+=1;
}
}else if(arr[i].equals(compareStr[2])){
if(x>1){
x-=1;
}
}else if(arr[i].equals(compareStr[3])){
if(x<n){
x+=1;
}
}
}
System.out.printf("%d %d",x,y);
}
}
문제1) nextInt() 메서드 다음에 nextLine() 메서드를 실행하려고 하면 nextLine() 메서드가 넘어가버리는 오류가 발생
-> 이유: nextLine() 메서드는 Enter값을 기준으로 메서드를 종료하기 때문이다.
-> 해결방법: nextLine() 메서드를 nextInt() 메서드 다음에 추가로 사용함으로써 해결할 수 있다.
문제2) String[] compareStr = { 'L' , 'R', 'U', 'D' } 형태로 String배열 초기화 시, char 값을 String으로 convert 불가 오류 발생
-> 해결방법: String.valueOf(type of char)메서드를 사용해서 char 값을 String으로 변환하여 String 배열에 추가할 수 있었다.
참고 글
728x90
반응형
'알고리즘 > 구현' 카테고리의 다른 글
[알고리즘] 구현 - 시각 ( java ) (0) | 2021.02.09 |
---|---|
[CodeUp] 1034 : [기초-입출력] 연월일 입력받아 그대로 출력하기 (java) (0) | 2020.11.22 |
[CodeUp] 1019 : [기초-입출력] 연월일 입력받아 그대로 출력하기 (java) (0) | 2020.11.11 |