728x90
반응형
2024.05.30기준 - 실버3
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 배열을 오름차순으로 정렬하는 대신에 배열 전체를 뒤집을 수 있는 것을 포함하여 정렬한 횟수를 출력하는 문제입니다.
먼저 배열을 저장할때,
1. 오름차순으로 정렬할 배열
2. 내림차순으로 정렬할 배열
2가지로 나뉘어 저장을 했습니다.
만약, 내림차순으로 할 시 전체 배열 뒤집기를 해야되기 때문에 초기 횟수를 내림차순은 1로 시작하게 되었습니다.
오름차순 함수에서 조건문으로 현재 참조하는 배열값보다 앞 배열이 더 작다면
count++과 동시에 두 값을 교환을 해주었고,
내림차순 함수에서는 조건문으로 현재 참조하는 배열값보다 앞 배열이 더 크다면
count++과 동시에 두 값을 교환하여
두 count 변수 중 더 작은값을 출력했습니다.
코드
package Main;
import java.io.*;
import java.util.*;
public class Main {
static int n;
static int[] uparr, doarr;
static int upcount = 0; // 오름차순
static int downcount = 1; // 내림차순, 배열 전체 뒤집기 +1
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
n = Integer.parseInt(br.readLine()); // 원소의 개수
StringTokenizer st = new StringTokenizer(br.readLine()); // 서로 다른 정수 배열
uparr = new int[n]; // 오름차순
doarr = new int[n]; // 내림차순
for (int i = 0; i < n; i++) {
uparr[i] = Integer.parseInt(st.nextToken());
doarr[i] = uparr[i];
}
ascend(); // 오름차순 정렬
descend(); // 내림차순 정렬
bw.write(Integer.toString(Math.min(upcount, downcount)));
bw.flush();
bw.close();
br.close();
}
// 오름차순 정렬
private static void ascend() {
boolean run = true;
int sub;
while (run) {
boolean check = false;
for (int i = 0; i < n - 1; i++) {
if (uparr[i] > uparr[i + 1]) { // 앞에 원소가 더 작다면
check = true;
sub = uparr[i + 1];
uparr[i + 1] = uparr[i];
uparr[i] = sub;
upcount++;
}
}
if (!check) { // 정렬이 완료되면 종료
run = false;
}
}
}
// 내림차순 정렬
private static void descend() {
boolean run = true;
int sub;
while (run) {
boolean check = false;
for (int i = 0; i < n - 1; i++) {
if (doarr[i] < doarr[i + 1]) { // 앞에 원소가 더 크다면
check = true;
sub = doarr[i + 1];
doarr[i + 1] = doarr[i];
doarr[i] = sub;
downcount++;
}
}
if (!check) { // 정렬이 완료되면 종료
run = false;
}
}
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BAEKJOON / 백준 - JAVA 31926번 밤양갱 (0) | 2024.06.04 |
---|---|
BAEKJOON / 백준 - JAVA 31872번 강의실 (0) | 2024.05.31 |
BAEKJOON / 백준 - JAVA 31869번 선배님 밥 사주세요! (2) | 2024.05.29 |
BAEKJOON / 백준 - JAVA 31866번 손가락 게임 (0) | 2024.05.27 |
BAEKJOON / 백준 - JAVA 11070번 피타고라스 기댓값 (0) | 2024.05.26 |