[BOJ] 10814 - 나이순 정렬 (Java)

EunBeen Noh·2024년 3월 28일

Algorithm

목록 보기
31/52

알고리즘

  • 정렬

1. 문제

2. Idea

  • 나이를 인덱스로 사용한 배열 리스트 사용

3. 풀이

3.1. 변수 선언 및 초기화

  • N: 사람 수
  • ArrayList[] names: index=나이, value=해당 나이인 사람들의 이름을 담은 배열(add 순서를 유지할 수 있음.)
int N=Integer.parseInt(sc.nextLine());
ArrayList<String>[] names=new ArrayList[201];

3.2. 리스트에 입력 정보 삽입

  • ArrayList 초기화
  • age에 위치한 배열에 이름 add
  • n_length=n의 자릿수 -> 분해합을 계산할 범위 설정
for(int i=0; i<N; i++){
	StringTokenizer st=new StringTokenizer(sc.nextLine());
	int age=Integer.parseInt(st.nextToken());
	String name=st.nextToken();
	if(names[age]==null) {names[age]=new ArrayList<>();}
	names[age].add(name);
}

3.3. 결과 출력

  • names 리스트를 순회하면서 각 인덱스와 인덱스에 속한 배열들의 내용을 출력
for(int i=0; i<201; i++){
	if(names[i]!=null){
		for(String name:names[i]){
			System.out.println(i+" "+name);
		}
	}
}

4. 전체코드

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int N=Integer.parseInt(sc.nextLine());
        ArrayList<String>[] names=new ArrayList[201];
        for(int i=0; i<N; i++){
            StringTokenizer st=new StringTokenizer(sc.nextLine());
            int age=Integer.parseInt(st.nextToken());
            String name=st.nextToken();
            if(names[age]==null) names[age]=new ArrayList<>();
            names[age].add(name);
        }

        for(int i=0; i<201; i++){
            if(names[i]!=null){
                for(String name:names[i]){
                    System.out.println(i+" "+name);
                }
            }
        }
    }
}

0개의 댓글