백준 10431 줄세우기 JAVA 풀이 (구현, 정렬, 시간복잡도)

2026. 4. 12. 21:22·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

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


📌 문제 개요

백준 10431번은 학생들이 줄을 설 때 발생하는 이동 횟수의 총합을 구하는 문제

학생들은 순서대로 줄에 들어오며,


자신보다 키가 큰 학생보다 앞에 서야 합니다.

이 과정에서 발생하는 이동 횟수를 모두 더하는 것이 목표입니다.


📌 접근 방법

이 문제는 실제로 학생을 이동시키는 것보다,
이동 횟수를 계산하는 것이 핵심 학생이 들어올 때마다:

  • 이미 들어온 학생들 중에서
  • 자신보다 키가 큰 학생 수를 세면 됨

이 값이 곧 이동 횟수


📌 핵심 아이디어

이동 횟수의 의미

현재 학생 기준 : 앞에 있는 학생 중 나보다 큰 학생 수 = 이동 횟수


예시

입력 : 5 3 4 2

 

진행:

  • 5 → 이동 없음
  • 3 → 5보다 작음 → 1칸 이동
  • 4 → 5보다 작음 → 1칸 이동
  • 2 → 5,3,4보다 작음 → 3칸 이동

총 이동 = 1 + 1 + 3 = 5


📌 전체 코드

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

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 t = 0; t < T; t++) {
            StringTokenizer st = new StringTokenizer(br.readLine());

            int caseNum = Integer.parseInt(st.nextToken());
            int[] arr = new int[20];

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

            int count = 0;

            for (int i = 0; i < 20; i++) {
                for (int j = 0; j < i; j++) {
                    if (arr[j] > arr[i]) {
                        count++;
                    }
                }
            }

            System.out.println(caseNum + " " + count);
        }
    }
}

 


📄 정리

이 문제는 정렬처럼 보이지만 실제로는 이동 횟수만 계산하는 구현 문제

  • 앞에 있는 학생만 비교하면 된다
  • 나보다 큰 학생 수를 세면 된다
  • 실제 이동은 필요 없다
  • 시간복잡도: O(N²) (N=20 → 충분히 빠름)

 

728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

백준 16395 파스칼의 삼각형 JAVA 풀이 (DP, 조합)  (0) 2026.04.14
백준 2628 종이자르기 JAVA 풀이 (구현, 정렬, 시간복잡도)  (0) 2026.04.13
[백준] 11576번 : Base Conversion (JAVA)  (0) 2026.04.12
백준 15688 수 정렬하기 5 JAVA 풀이 (정렬, 시간복잡도)  (0) 2026.04.09
백준 13301 타일 장식물 JAVA 풀이 (피보나치, DP)  (0) 2026.04.08
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 백준 16395 파스칼의 삼각형 JAVA 풀이 (DP, 조합)
  • 백준 2628 종이자르기 JAVA 풀이 (구현, 정렬, 시간복잡도)
  • [백준] 11576번 : Base Conversion (JAVA)
  • 백준 15688 수 정렬하기 5 JAVA 풀이 (정렬, 시간복잡도)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    백엔드개발자
    구현
    level1
    프로그래머스
    시뮬레이션
    백준
    문자열
    java
    정처기
    브루트포스
    피보나치
    정보처리기사 실기 기출문제
    자료구조
    코딩테스트
    정보처리기사
    springboot
    정렬
    level0
    Level2
    정처기오답노트
    solved.ac
    완전탐색
    기출문제
    실기
    정처기실기
    배열
    수학
    dp
    자바
    알고리즘
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
백준 10431 줄세우기 JAVA 풀이 (구현, 정렬, 시간복잡도)
상단으로

티스토리툴바