문제
정수를 입력으로 받아 입력 받은 수를 거꾸로 출력하는 문제이다.
입력
입력의 첫 수는 수의 개수 n 이다. ( 1 <= n <= 1000 ) 다음 줄에는 n 개의 수가 입력으로 주어진다. 각 수는 -10000 초과 10000 미만인 정수이다.
출력
한 줄에 입력받은 수를 거꾸로 출력한다.
예제 입력
예제 출력
5 4 3 2 1
예제 입력
8 1 -2 3 4 6 8 2 1
예제 출력
1 2 8 6 4 3 -2 1
import java.util.Scanner;
public class Main{
public static void main(String[] args){
// Please Enter Your Code Here
Scanner sc = new Scanner(System.in);
// 첫수
int arrLength = sc.nextInt(); // 숫자 갯수 받아옴
// 첫 라인에서 수들 못받아옴
String numbers = sc.nextLine();
// 두번째 라인에서 받아옴 ex) 1 2 3 4 5
String numbers2 = sc.nextLine(); // 라인을 통으로 받아옴 (nextLine 으로 받아오면 타입은 String) )
String[] numberArr = new String[arrLength]; //숫자 수만큼 배열 생성
numberArr = numbers2.split(" "); // 받아온 라인을 배열에 그대로 저장
for(int i=arrLength-1;i>=0;i--){
System.out.print(numberArr[i]+ " "); // 거꾸로 출력
}
}
}
다른 코드
import java.util.Scanner;
public class study2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt(); // 숫자 갯수 받아옴
int[] arr = new int[x]; // 숫자 갯수만큼 배열 생성
for(int i=0;i<x;i++ ){
arr[i] =sc.nextInt(); // 숫자들 배열에 삽입
}
for(int i=x-1;i>=0;i-- ){
System.out.println(arr[i]); // 반대로 출력
}
}
}
후기 - 첫번째 코드에 비해 두번쨰가 직관적이고 깔끔하다 nextLine() 으로 받아오면 한번에 받아올 수 있는 대신 split 으로 나눠주는 후처리가 필요하고 Scanner.nextInt() 로 입력받은 후 Scanner.nextLine() 사용하게되면 입력을 받지 못하고 바로 끝나버리는 현상이 발견된다.
Scanner.nextInt()의 경우 개행문자(줄 바꿈, \n) 전 까지 입력을 받아 이후 수행될 Scanner.nextLine() 이 문제가 발생하므로 강제로 한번 더 받아서 처리를 해줘야 하는 번거로움이 있다.