반응형
문제(출처)
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다.
둘째 줄부터 N개의 줄에는 숫자가 주어진다.
이 수는 절댓값이 1,000보다 작거나 같은 정수이다.
수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
예제 입력
5
5
2
3
4
1
예제 출력
1
2
3
4
5
내 풀이
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;
public class Main { public static void main(String args[]) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); try { int rang = Integer.parseInt(br.readLine()); int[] num = new int[rang]; for(int i = 0; i < rang; i++) { num[i] = Integer.parseInt(br.readLine()); } int[] result = calc(num); for(int i : result) { bw.write(String.valueOf(i)); bw.newLine(); } bw.flush(); bw.close(); } catch (NumberFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
private static int[] calc(int[] num) { int temp = 0;// 임시 저장 변수를 선언합니다. for(int i = 0; i < num.length; i++) { for(int j = (i+1); j <= num.length-1; j++) {// i의 다음 수를 j로 지정합니다. if(num[i] > num[j]) {// i번쨰 값이 j번쨰 값보다 크다면 j의 값을 temp에 저장합니다.// i번째 값을 j에 저장합니다.// temp값을 i에 저장합니다. temp = num[j]; num[j] = num[i]; num[i] = temp; } } } return num; } }
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String args[]) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
try {
int rang = Integer.parseInt(br.readLine());
int[] num = new int[rang];
for(int i = 0; i < rang; i++) {
num[i] = Integer.parseInt(br.readLine());
}
int[] result = calc(num);
for(int i : result) {
bw.write(String.valueOf(i));
bw.newLine();
}
bw.flush();
bw.close();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static int[] calc(int[] num) {
int temp = 0;
// 임시 저장 변수를 선언합니다.
for(int i = 0; i < num.length; i++) {
for(int j = (i+1); j <= num.length-1; j++) {
// i의 다음 수를 j로 지정합니다.
if(num[i] > num[j]) {
// i번쨰 값이 j번쨰 값보다 크다면 j의 값을 temp에 저장합니다.
// i번째 값을 j에 저장합니다.
// temp값을 i에 저장합니다.
temp = num[j];
num[j] = num[i];
num[i] = temp;
}
}
}
return num;
}
}
내 풀이 해석
앞 뒤 숫자를 비교해서 순서를 변경합니다.
반응형
'개발(합니다) > 알고리즘&코테' 카테고리의 다른 글
알고리즘 단계별로 풀어보기 : BOJ-10989(수정렬하기[3]) (0) | 2019.01.15 |
---|---|
알고리즘 단계별로 풀어보기 : BOJ-2751(수정렬하기[2]) (0) | 2019.01.14 |
알고리즘 단계별로 풀어보기 : BOJ-6064(카잉달력) (0) | 2018.12.26 |
알고리즘 단계별로 풀어보기 : BOJ-1475(방번호) (0) | 2018.12.24 |
알고리즘 단계별로 풀어보기 : BOJ-2775(부녀회장이될테야) (0) | 2018.12.24 |