반응형
3가지 방식으로 문제를 풀어봤다.
리스트에 원소가 추가되는 방식을 이 문제를 풀면서 배웠다.
리스트를 만들 때는
데이터타입 리스트명[] = new 데이터타입[데이터크기];
인덱스로 데이터를 가져올 때는
리스트명[인데스번호]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 문제
// 정수 N개로 이루어진 수열 A와 정수 X가 주어진다.
// 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
//
// 입력
// 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
//
// 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다.
// 주어지는 정수는 모두 1보다 크거나 같고,
// 10,000보다 작거나 같은 정수이다.
//
// 출력
// X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다.
// X보다 작은 수는 적어도 하나 존재한다.
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int X = sc.nextInt();
// 배열의 크기는 N개가 들어가는 것이므로 N
int arr[] = new int[N];
// 배열i에 두 번째 줄 숫자가 들어가도록 한다.
for (int i = 0; i < N; i++) {
arr[i] = sc.nextInt();
}
sc.close();
// X보다 작을 경우 배열의 인덱스[i]를 띄어쓰기와 함께 출력하라는 것이다.
for (int i=0;i < N;i++) {
if (arr[i] < X) {
System.out.print(arr[i] + " ");
}
}
}
}
ArrayList도 동일한데 코드가 조금 다르다.
ArrayList만들 때
ArrayList<데이터타입> 리스트명 = new ArrayList<데이터타입>();
ArrayList에 데이터 추가할 때
리스트명.add();
ArrayList에서 데이터 가져올 때
리스트명.get(인덱스번호);
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 문제
// 정수 N개로 이루어진 수열 A와 정수 X가 주어진다.
// 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
//
// 입력
// 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
//
// 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다.
// 주어지는 정수는 모두 1보다 크거나 같고,
// 10,000보다 작거나 같은 정수이다.
//
// 출력
// X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다.
// X보다 작은 수는 적어도 하나 존재한다.
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int X = sc.nextInt();
ArrayList<Integer> A = new ArrayList<Integer>();
for (int i = 0; i < N; i++) {
A.add(sc.nextInt());
}
sc.close();
for (int i=0;i < N;i++) {
if (A.get(i) < X) {
System.out.print(A.get(i) + " ");
}
}
}
}
BufferedReader와 BufferedWriter를 사용한 입출력 아직 익숙하지가 않다.
package bj10871;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// 문제
// 정수 N개로 이루어진 수열 A와 정수 X가 주어진다.
// 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
//
// 입력
// 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
//
// 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다.
// 주어지는 정수는 모두 1보다 크거나 같고,
// 10,000보다 작거나 같은 정수이다.
//
// 출력
// X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다.
// X보다 작은 수는 적어도 하나 존재한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int X = Integer.parseInt(st.nextToken());
ArrayList<Integer> A = new ArrayList<Integer>();
for (int i = 0; i < N; i++) {
A.add(Integer.parseInt(st.nextToken()));
}
br.close();
for (int i=0;i < N;i++) {
if (A.get(i) < X) {
int a = A.get(i);
bw.write(a + " ");
}
bw.flush();
bw.close();
}
}
}
42번에서 에러가 나오는데, 이유를 알 수 없어 질문을 올려놨다.
package bj10871;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// 문제
// 정수 N개로 이루어진 수열 A와 정수 X가 주어진다.
// 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
//
// 입력
// 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
//
// 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다.
// 주어지는 정수는 모두 1보다 크거나 같고,
// 10,000보다 작거나 같은 정수이다.
//
// 출력
// X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다.
// X보다 작은 수는 적어도 하나 존재한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// br.readLine이라는 것이 한 줄만 읽는 것이기 때문에 한 줄 리딩이 끝났으면
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int X = Integer.parseInt(st.nextToken());
// 이렇게 다시 한 줄을 읽을 수 있는 것을 써줘야 한다.
st = new StringTokenizer(br.readLine(), " ");
ArrayList<Integer> A = new ArrayList<Integer>();
for (int i = 0; i < N; i++) {
A.add(Integer.parseInt(st.nextToken()));
}
br.close();
for (int i=0;i < N;i++) {
if (A.get(i) < X) {
int a = A.get(i);
bw.write(a + " ");
}
}
// bw 쓰는 마지막 위치, for문이 끝난 뒤에 중괄호 위치를 잘 확인하자!
bw.flush();
bw.close();
}
}
반응형
'Projects > 백준 문제' 카테고리의 다른 글
백준 10818번 자바 문제 최소 최대값 (0) | 2022.02.02 |
---|---|
백준 1110번 자바 문제 더하기 사이클 구하기 (0) | 2022.02.02 |
백준 2439번 자바 문제 (0) | 2022.02.01 |
백준 11022번 자바 문제 (0) | 2022.02.01 |
백준 2742번 자바 문제 for문과 while문의 활용 (0) | 2022.02.01 |