문제

https://www.acmicpc.net/problem/10431

 

10431번: 줄세우기

초등학교 선생님 강산이는 아이들을 데리고 단체로 어떤 일을 할 때 불편함이 없도록 새로 반에 배정받은 아이들에게 키 순서대로 번호를 부여한다. 번호를 부여할 땐 키가 가장 작은 아이가 1

www.acmicpc.net

 

 

문제 접근

  • 삽입 정렬의 구현을 조금 변형하여 구현하는 문제였다.
  • 현재 데이터 보다 큰 데이터가 앞에 있는 그 즉시 큰 데이터를 포함하여 그 뒤에 있는 모든 데이터를 한 칸씩 뒤로 옮기는 부분이 가장 핵심적인 기능이었다. 모든 데이터를 한 칸 뒤로 옮기게 되면 현재 데이터보다 큰 데이터가 있던 자리에 현재 데이터를 삽입(insert)하는 방식으로 구현하면 끝나는 문제였다.

 

 

정답 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {

  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    int T = Integer.parseInt(br.readLine());
    for (int testCase = 0; testCase < T; testCase++) {
      StringTokenizer st = new StringTokenizer(br.readLine());
      int testNum = Integer.parseInt(st.nextToken());
      int ans = 0;

      int[] length = new int[20];
      for (int i = 0; i < 20; i++) {
        length[i] = Integer.parseInt(st.nextToken());
      }

      for (int i = 1; i < 20; i++) {
        for (int j = 0; j < i; j++) {
          if (length[j] > length[i]) {
            int temp = length[i];

            for (int k = i; k > j; k--){
              length[k] = length[k - 1];
              ans++;
            }

            length[j] = temp;
            break;
          }
        }
      }

      System.out.println(testNum + " " + ans);
    }
  }
}

'Algorithm > Simulation, Implement' 카테고리의 다른 글

[백준][BOJ 3758] - KCPC  (0) 2023.10.05
복사했습니다!