티스토리 뷰
반응형
문제
N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요.
입력
첫 줄에 자연수 N(1<=N<=100)이 주어지고, 그 다음 줄에 N개의 정수가 입력된다.
출력
자신의 바로 앞 수보다 큰 수만 한 줄로 출력한다.
예시 입력
6
7 3 9 5 6 12
예시 출력
7 9 6 12
문제 풀이
[첫번째 풀이]
import java.util.Scanner;
public class Main {
public String solution(int count, String[] numbers) {
String result = "";
for (int i=0; i<count; i++) {
if (i == 0) {
result += numbers[i];
continue;
}
int n = Integer.parseInt(numbers[i - 1]);
int m = Integer.parseInt(numbers[i]);
if (n < m) {
result += " " + numbers[i];
}
}
return result;
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int count = Integer.parseInt(scanner.nextLine());
String[] numbers = scanner.nextLine().split(" ");
Main main = new Main();
System.out.println(main.solution(count, numbers));
}
}
(Time 156ms / Memory 27MB)
[두번째 풀이]
import java.util.Scanner;
public class Main {
public String solution(int count, String[] numbers) {
String result = "";
for (int i=0; i<count; i++) {
if (i == 0) {
result += numbers[i];
continue;
}
int n = Integer.valueOf(numbers[i - 1]);
int m = Integer.valueOf(numbers[i]);
if (n < m) {
result += " " + numbers[i];
}
}
return result;
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int count = Integer.valueOf(scanner.nextLine());
String[] numbers = scanner.nextLine().split(" ");
Main main = new Main();
System.out.println(main.solution(count, numbers));
}
}
(Time 148ms / Memory 27MB)
[세번째 풀이]
import java.util.Scanner;
public class Main {
public String solution(int count, String[] numbers) {
String result = "";
for (int i=0; i<count; i++) {
if (i == 0) {
result += numbers[i];
continue;
}
int n = Integer.decode(numbers[i - 1]);
int m = Integer.decode(numbers[i]);
if (n < m) {
result += " " + numbers[i];
}
}
return result;
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int count = Integer.decode(scanner.nextLine());
String[] numbers = scanner.nextLine().split(" ");
Main main = new Main();
System.out.println(main.solution(count, numbers));
}
}
(Time 149ms / Memory 27MB)
[네번째 풀이]
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public ArrayList<Integer> solution(int[] numbers) {
ArrayList<Integer> result = new ArrayList<>();
for (int i=0; i<numbers.length; i++) {
if (i == 0 || numbers[i - 1] < numbers[i]) {
result.add(numbers[i]);
}
}
return result;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int count = scanner.nextInt();
int[] numbers = new int[count];
for (int i=0; i<count; i++) {
numbers[i] = scanner.nextInt();
}
Main main = new Main();
for (Integer i : main.solution(numbers)) {
System.out.print(i + " ");
}
}
}
(Time 161ms / Memory 27MB)
- 첫번째 풀이는 Integer.parseInt()를, 두번째 풀이는 Integer.valueOf()를, 세번째 풀이에서는 Integer.decode()를 이용해 String을 Int로 변환하였다.
- parseInt()를 사용한 첫번째 풀이가 상대적으로 시간이 오래걸렸다.
- 네번째 풀이는 풀이 영상을 보고 따라 해봤다.
반응형
'Java > Coding Test' 카테고리의 다른 글
[코딩테스트] 가위 바위 보 (0) | 2022.03.02 |
---|---|
[코딩테스트] 보이는 학생 (0) | 2022.03.02 |
[코딩테스트] 암호 (0) | 2022.02.28 |
[코딩테스트] 문자열 압축 (0) | 2022.02.27 |
[코딩테스트] 가장 짧은 문자거리 (0) | 2022.02.27 |