[SW Expert Academy] 1208. Flatten - Java

2019. 7. 29. 10:04프로그래밍/알고리즘

반응형

[SWEA] 1208. [S/W 문제해결 기본] 1일차 - Flatten 

 

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh&categoryId=AV139KOaABgCFAYh&categoryType=CODE

 

 

 

문제풀이
  1.   Arrays.sort()

    c#에서 제공하는 Array 클래스와 Sort클래스를 사용하여 문제를 해결한다.

  2.   Bubble Sort (버블정렬)
     첫 번째 자료와 두 번째 자료, 두 번째 자료와 세 번째 자료, 세 번째 자료와 네 번째 자료 이런 식으로 비교하면서 자료를 정렬한다. 1회전을 수행하고 나면 가장 큰 자료가 맨 뒤로 이동하게 된다. 2회전에서는 맨 끝에 있는 자료는 정렬에서 제외되고 2회전을 수행하고 나면 끝에서 두 번째 자료까지가 정렬에서 제외된다. 1회전을 수행할 때마다 정렬에서 제외되는 데이터가 하나씩 늘어나게 된다. 

 

 

전체소스

# Arrays.sort() 사용했을 때                                                 

import java.util.*;

public class Solution
{
    public static void main(String[] args)
    {

        Scanner sc = new Scanner(System.in);
        for (int tc = 1; tc <= 10; tc++)
        {
            int dump      = sc.nextInt();
            int[] numbers = new int[100];

            for (int i = 0; i < 100; i++)
            {
                numbers[i] = sc.nextInt();
            }
            Arrays.sort(numbers);
            for (int i = 0; i < dump; i++)
            {
                numbers[0]++;
                numbers[99]--;
                Arrays.sort(numbers);
            }
            int result = numbers[99] - numbers[0];
            System.out.println("#" + tc + " " + result);
        }
    }
}

 

 

# 버블정렬 사용했을 때

import java.util.*;

public class Solution
{
    public static void main(String[] args)
    {

        Scanner sc = new Scanner(System.in);
        int temp = 0;

        for (int tc = 1; tc <= 10; tc++)
        {
            int dump   = sc.nextInt();
            int[] nums = new int[100];
            for (int i = 0; i < 100; i++) nums[i] = sc.nextInt();
			
            // 버블정렬
            for (int i = 0; i < nums.length - tc; i++)
            {
                if (nums[i] > nums[i + 1])
                {
                    temp        = nums[i];
                    nums[i]     = nums[i + 1];
                    nums[i + 1] = temp;
                }
            }
            
            for (int i = 0; i < dump; i++)
            {
                nums[0]++;
                nums[99]--;
                
                // 버블정렬
                for (int j = 0; j < nums.length - tc; j++)
                {
                    if (nums[j] > nums[j + 1])
                    {
                        temp        = nums[j];
                        nums[j]     = nums[j + 1];
                        nums[j + 1] = temp;
                    }
                }
            }
            int result = nums[99] - nums[0];
            System.out.println("#" + tc + " " + result);
        }
    }

 

 

반응형