본문 바로가기

알고리즘/구현

[알고리즘] 구현 - 상하좌우 ( java )

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 배열에 추가할 수 있었다.

 

 

참고 글

deftkang.tistory.com/55

 

[Java] Scanner 클래스 사용법과 next(), nextLine()메소드의 차이, nextInt() 다음 nextLine()메소드 실행 시 논

Scanner 클래스 java.util 패키지의 Scanner 클래스를 이용하면 콘솔로부터 기본 타입의 값을 바로 읽을 수 있다. Scanner 객체를 생성하려면 다음과 같이 생성자에 System.in 매개값을 주면 된다.  Scanner sca

deftkang.tistory.com

 

728x90
반응형