코딩테스트

[코딩테스트]구현(상하좌우)

독학하는 정호빈 2021. 12. 27. 14:59

책 '이것이 취업을 위한 코딩 테스트다'를

기반으로 공부하였습니다.

https://github.com/ndb796/python-for-coding-test

 

GitHub - ndb796/python-for-coding-test: [한빛미디어] "이것이 취업을 위한 코딩 테스트다 with 파이썬" 전체

[한빛미디어] "이것이 취업을 위한 코딩 테스트다 with 파이썬" 전체 소스코드 저장소입니다. - GitHub - ndb796/python-for-coding-test: [한빛미디어] "이것이 취업을 위한 코딩 테스트다 with 파이썬" 전체 소

github.com

 

 이번에는 구현관련 문제를 풀어보았습니다. 해당 문제에서 모르는 개념이 좀 많이 나왔습니다. 그래서 중요하다고 생각하여 다시 한번 풀어보기위해 글을 작성해 보았습니다.

 

1.상하좌우

입력조건

- 첫째 줄에 공간의 크기를 나타내는 N이 주어진다.(1<=N<=100)

- 둘째 줄에 여행가 A가 이동할 계획서 내용이 주어진다.(1<=이동횟수<=100)

출력조건

-첫째 줄에 여행가 A가 최종적으로 도착할 지점의 좌표 (X,Y)를 공백으로 구분하여 출력한다.

 

작성코드(Java)

import java.util.*;

public class test4_important {

	public static void main(String[] args) {
		Scanner kb = new Scanner(System.in);
		
		int N = kb.nextInt();// 정수 엔터키 를 누르면 정수는 변수에 대입이 되고 엔터키는 버퍼에 남게되어서
		kb.nextLine(); //해당 코드로 버퍼를 비워줘야한다.
		int i=0;
		int j=0;
		//배열크기 선언하지않고 문자열배열 사용하는법
		String[] plan = kb.nextLine().split(" ");
		for(int u =0; u<plan.length; u++) {
			switch(plan[u]) {
			case "R":
				if(j<N-1) {
					j++;
				}
				break;
			case "L":
				if(j>0) {
					j--;
				}
				break;
			case "U":
				if(i>0) {
					i--;
				}
				break;
			case "D":
				if(i<N-1) {
					i++;
				}
				break;
			default:
				break;
			}
		}
		System.out.println("("+(i+1)+","+(j+1)+")");
		kb.close();
	}

}

 

설명

: kb.nextLine()으로 버퍼를 비워주는 코드를 작성했다. 이 부분에서 nextInt()에 정수값을 입력하고 엔터키를 누르면 정수값만 변수에 들어가고 엔터키는 버퍼에 남게되어서 다음 입력값을 받을 때 해당 변수에 엔터키값이 들어가게된다. 따라서 해당코드로 버퍼를 비워주어야 한다. 해당문제는 배열의 크기를 지정하지않고 입력값을 토대로 작동하는 코드를 작성해야한다. 따라서 String[] plan = kb.nextLine().split(" ");를 이용하여 " "공백 단위로 문자열을 읽어오며, 그 입력값 개수에 맞게 배열이 형성된다.

'코딩테스트' 카테고리의 다른 글

[코딩테스트]DFS(음료수 얼려 먹기)  (0) 2022.01.04
[코딩테스트]BFS  (0) 2022.01.01
[코딩테스트]DFS  (0) 2021.12.31
[코딩테스트]그리디(큰 수의 법칙)  (0) 2021.12.27
코딩테스트  (0) 2021.12.27