알고리즘/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)