본문 바로가기
JAVA/자료구조&알고리즘

JAVA Doit 알고리즘 코딩테스트 자바 편 - Day5

by tripleup 2023. 5. 26.
728x90
반응형

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]);
             }
         }
    }
}
728x90
반응형

댓글