본문 바로가기

알고리즘(Algorithm)

역으로 출력하기

 

문제


정수를 입력으로 받아 입력 받은 수를 거꾸로 출력하는 문제이다.

 

입력


입력의 첫 수는 수의 개수 n 이다. ( 1 <= n <= 1000 ) 다음 줄에는 n 개의 수가 입력으로 주어진다. 각 수는 -10000 초과 10000 미만인 정수이다.

 

출력


한 줄에 입력받은 수를 거꾸로 출력한다.

 

예제 입력

 
  5 1 2 3 4 5

예제 출력

  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() 이 문제가 발생하므로 강제로 한번 더 받아서 처리를 해줘야 하는 번거로움이 있다.

'알고리즘(Algorithm)' 카테고리의 다른 글

점수 계산  (1) 2023.06.04
최댓값  (0) 2023.06.04
소수 판별 2  (0) 2023.05.24
삼각형 출력 3  (0) 2023.05.24
삼각형 출력 2  (0) 2023.05.23