반응형
[1] 백준 카테고리
단계별로 풀어보기
정렬
1단계 수 정렬하기
https://www.acmicpc.net/problem/2750
[2] 문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
1. 입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
2. 출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
3. 예제 입력 1
5
5
2
3
4
1
4. 예제 출력 1
1
2
3
4
5
[3] 정답
1. 정답 해설 미포함
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static int[] arr;
public static void main(String[] args) throws IOException {
int N = Integer.parseInt(br.readLine());
arr = new int[N];
rePeat(N);
ascendingValue(N);
outPut(N);
}
static void rePeat(int N) throws NumberFormatException, IOException {
for(int i=0; i<N; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
}
static void ascendingValue(int N) {
for(int i2=0; i2 < arr.length-1; i2++) {
for(int i3=i2+1; i3<arr.length; i3++) {
if(arr[i2] > arr [i3]) {
int temp = arr[i3];
arr[i3] = arr[i2];
arr[i2] = temp;
}
}
}
}
static void outPut(int N) {
for(int i4=0; i4<N; i4++) {
System.out.println(arr[i4]);
}
}
}
2.정답 해설 포함
import java.io.BufferedReader;
/* BufferedReader 사용을 위해서 java.io.BufferedReader 클래스를 import 한다.
Enter를 경계로 인식하고 받은 데이터는 String으로 고정된다.*/
import java.io.InputStreamReader;
/* byte 단위 데이터를 문자 단위 데이터로 처리할 수 있도록 변환해주기 위해서
InputStreamReader를 사용한다.
InputStreamReader 사용을 위해서 java.io.InputStreamReader 클래스를 import 한다.*/
import java.io.IOException;
/* 예외 처리를 위해서 IOException를 사용한다.
IOException 사용을 위해서 java.io.IOException 클래스를 import 한다.*/
public class Main {
// 접근제어자 public으로 Main 클래스를 선언한다
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// BufferedReader 객체 br를 선언한다
static int[] arr;
// int형 배열 arr를 선언한다.
public static void main(String[] args) throws IOException {
/* 접근제어자 public으로 메모리에 상주하게 리턴값이 없이 main 함수를 선언한다.
예외처리로 IOException를 포함한다.*/
int N = Integer.parseInt(br.readLine());
// 변수 N에 값을 개행 단위로 구분해서 입력받는다.
arr = new int[N];
// 배열 arr의 길의를 선언한다 길이는 N이다.
rePeat(N);
// 함수 rePeat(N)를 호출한다.
ascendingValue(N);
// 함수 ascendingValue(N)를 호출한다.
outPut(N);
// 함수 output(N)를 호출한다.
}
static void rePeat(int N) throws NumberFormatException, IOException {
// 함수 rePeat를 선언한다.
for(int i=0; i<N; i++) {
// for문 선언 i가 0~<N까지 반복
arr[i] = Integer.parseInt(br.readLine());
// 변수 arr[i]에 개행으로 값을 입력
}
}
static void ascendingValue(int N) {
// 함수 ascendingValue를 선언한다.
for(int i2=0; i2 < arr.length-1; i2++) {
// for문을 선언한다. 변수 i2가 0~<arr.length-1 일때 반복된다.
for(int i3=i2+1; i3<arr.length; i3++) {
// for문을 선언한다 변수 i3가 i2+1~arr.length 일때 반복된다.
if(arr[i2] > arr[i3]) {
// if문 선언 arr[i2]가 arr[i3]보다 클때 괄호 안의 코드가 실행된다.
int temp = arr[i3];
// 변수 temp를 선언하고 변수 arr[i3]값을 저장한다.
arr[i3] = arr[i2];
// 변수 arr[i3]에 변수 arr[i2] 값을 저장한다.
arr[i2] = temp;
// 변수 arr[i2]에 변수 temp에 값 저장
}
}
}
}
static void outPut(int N) {
// 메모리에 상주하게 함수 output 선언
for(int i4=0; i4<N; i4++) {
// for문 선언 i4가 0~<N까지 괄호안에 코드 반복
System.out.println(arr[i4]);
// 변수 arr[i4]에 저장된 값 출력
}
}
}
수를 여러개 받아서 정렬하는 문제이다.
값을 입력받은 후 정렬 알고리즘을 사용해서 정렬하면 된다. 나는 bubble 알고리즘을 사용하였다.
입력 정렬 출력 부분을 모두 함수로 구분해서 선언한다음 Main 함수에서는 호출하도록 코드를 짰다.
static void ascendingValue(int N) {
for(int i2=0; i2 < arr.length-1; i2++) {
for(int i3=i2+1; i3<arr.length; i3++) {
if(arr[i2] > arr [i3]) {
int temp = arr[i3];
arr[i3] = arr[i2];
arr[i2] = temp;
}
}
}
}
bubble 알고리즘 부분이다.
앞뒤 값을 계속 비교해서 정렬하게 된다.
[4] 결과
반응형
'프로그래밍 > 백준 문제 풀이(자바)' 카테고리의 다른 글
백준 10989번 자바 문제 답/해설(수 정렬하기 3 문제) (0) | 2022.01.13 |
---|---|
백준 2751번 자바 문제 답/해설(수 정렬하기 2 문제) (0) | 2022.01.12 |
백준 1436번 자바 문제 답/해설(영화감독 숌 문제) (0) | 2022.01.10 |
백준 1018번 자바 문제 답/해설(체스판 다시 칠하기 문제) (0) | 2022.01.09 |
백준 7568번 자바 문제 답/해설(덩치 문제) (0) | 2022.01.08 |