알고리즘/Java 코딩 테스트 준비

[Java] 큰 수 출력하기.

Dev dreamer 2023. 1. 31. 09:27

 

첫줄에 자연수 n이 주어지며, 그 다움 줄에 n개의 정수가 입력된다

 

자신의 바로 앞 수보다 큰수만 한줄로 출력된다.

 

입력 예제

 

6

7 3 9 5 6 12

 

출력 예제

 

7 9 6 12

 

💡 풀때 생각


문제 푸는것 보다 StringTokenizer 사용법에 대해서 많이 헤맸다.

문제는 쉬우니까 출력(Main)부분부터 한번 설명해 보겠다.

 

BufferedReader 의 객체를 생성하고 그 인스턴스 변수 br을 이용해서

 

일단 int a 를 받아준다. 이때 문자열 형태로 데이터가 들어오니까 Integer.parseInt 를 해줘야 한다.

 

그 후에 StringTokenizer의 객체를 생성해주고 br.readLine()으로 한줄을 읽어오는데

 

이때 빈칸을 기준으로 데이터를 가져올 수 있다.

 

a 의 수만큼 입력을 받으므로 for문을 돌려서 int배열에 넣어주고 출력을 위해 반복문을 써주고

 

배열을 solution 메소드에 넘겨서 맨 첫 숫자는 출력되니까 numarr[0] 을 answer에 넣어주고

 

arrayList 를 반환하므로 나머지들을 이제 뒤에 숫자가 더 크면 arrayList에 넣어준다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {
	public ArrayList<Integer> solution(int[] numarr) {
		
		ArrayList<Integer> answer = new ArrayList();
		answer.add(numarr[0]);
		for(int i=0; i<numarr.length-1; i++) {
			int tem =numarr[i];
			if(tem<numarr[i+1]) {
				answer.add(numarr[i+1]);
			}
		}
		
		return answer;
		
		
		
	}
	public static void main(String[] args) throws IOException {
		
		Main T = new Main();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int a = Integer.parseInt(br.readLine());
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int[] numarr = new int[a];
		for(int i =0 ; i<a ; i++) {	
			numarr[i] = Integer.parseInt(st.nextToken());
		}
		for(Integer x : T.solution(numarr)) {
		System.out.print(x+" ");
		}
	}
}

 

💡강사님 풀이.


푸는 방법은 전반적으로 비슷한듯

 

 

 

 

 

코테 관련해서 많이 부담스러웠는데 강의를 통해 푸는 방법들을 배우니 이 시간이 즐겁습니다.

진짜 기능하나하나 다양한 방법으로 잘 가르쳐주십니다.

출처 : 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 대시보드 - 인프런 | 강의 (inflearn.com)