04 정렬

04-1 버블 정렬
문제 015 수 정렬하기 1
백준 2750번 https://www.acmicpc.net/problem/2750
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
01단계 <문제 분석하기>
1. 문자열 형태로 입력값을 받음
2. 문자 배열로 변환
3. 문자 배열값을 순서대로 읽으면서 숫자형으로 변환하여 더함
* 문자열을 숫자형으로 변경하려면?
- 아스키코드에서 같은 의미의 문자와 숫자의 드 값 차이는 48이다.
- ex) 문자'1'을 숫자 1로 변환하려면 '1'-48 또는 '1'-'0' 으로연산
02단계 <손으로 풀어 보기>
03단계 <슈도코드 작성하기>
04단계 <코드 구현하기>
public class Main {
public class void main(String[] args) {
Scanner sc new Scanner(System.in);
int N = sc.nextInt();
int[] A = new int[N];
for (int i = 0; i < N; i++) {
A[i] = sc.nextInt();
}
for (int i = 0; i < N-1; i++) {
for (int j = 0; j < N-1-i; j++) {
if (A[j] > A[j+1]) {
int temp = A[j];
A[j] = A[j+1];
A[j+1] = temp;
}
}
}
for (int i = 0; i < N; i++) {
System.out.println(A[j]);
}
}
}
문제 016 스택으로 오름차순 수열 만들기
백준 1874번 https://www.acmicpc.net/problem/1874
1874번: 스택 수열
1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.
www.acmicpc.net
01단계 <문제 분석하기>
1. 문자열 형태로 입력값을 받음
2. 문자 배열로 변환
3. 문자 배열값을 순서대로 읽으면서 숫자형으로 변환하여 더함
* 문자열을 숫자형으로 변경하려면?
- 아스키코드에서 같은 의미의 문자와 숫자의 드 값 차이는 48이다.
- ex) 문자'1'을 숫자 1로 변환하려면 '1'-48 또는 '1'-'0' 으로연산
02단계 <손으로 풀어 보기>
03단계 <슈도코드 작성하기>
04단계 <코드 구현하기>
public class Main {
public static void main (String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(reader.readLine());
mData[] A = new mData[N];
for (int i = 0; i < N; i++) {
A[i] = new mData(Integer.parseInt(reader.readLine()), i);
}
Arrays.sort(A);
int Max == 0;
for (int = 0; i < N; i++) {
if (Max < A[i].index - i)
Max = A[i].index - i;
}
System.out.println(Max + 1);
}
}
class mData implements comparable<mData> {
int value;
int index;
public mData(int value, int index) {
super();
this.value = value;
this.index = index;
}
@Override
public int compareTo(mData o) {
return this.value - o.value();
}
}
04-2 선택 정렬
문제 017 내림차순으로 자릿수 정렬하기
백준 1427번 https://www.acmicpc.net/problem/1427
1427번: 소트인사이드
첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
01단계 <문제 분석하기>
1. 문자열 형태로 입력값을 받음
2. 문자 배열로 변환
3. 문자 배열값을 순서대로 읽으면서 숫자형으로 변환하여 더함
* 문자열을 숫자형으로 변경하려면?
- 아스키코드에서 같은 의미의 문자와 숫자의 드 값 차이는 48이다.
- ex) 문자'1'을 숫자 1로 변환하려면 '1'-48 또는 '1'-'0' 으로연산
02단계 <손으로 풀어 보기>
03단계 <슈도코드 작성하기>
04단계 <코드 구현하기>
public class Main {
public static void main(Stringp[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
int[] A = new int[str.length()];
for (int i = 0; i < str.length(); i++) {
A[i] = Integer.parseInt(str.substring(i, i+1));
}
for (int i = 0; i < str.length(); i++) {
int Max = i;
for (int j = i + 1; j < str.length(); j++) {
if (A[j] > A[Max]) {
int temp = A[i];
A[i] = A[Max];
}
}
for (int i = 0; i < str.length(); i++) {
System.out.pritnln(A[i]);
}
}
}
}
'JAVA > 자료구조&알고리즘' 카테고리의 다른 글
JAVA Doit 알고리즘 코딩테스트 자바 편 - Day7 (0) | 2023.05.28 |
---|---|
JAVA Doit 알고리즘 코딩테스트 자바 편 - Day6 (0) | 2023.05.27 |
JAVA Doit 알고리즘 코딩테스트 자바 편 - Day4 (0) | 2023.05.25 |
JAVA Doit 알고리즘 코딩테스트 자바 편 - Day3 (0) | 2023.05.24 |
JAVA Doit 알고리즘 코딩테스트 자바 편 - Day2 (0) | 2023.05.23 |
댓글