Baekjoon algorithm training

[백준] 10989 (수 정렬하기 3)

interfacer_han 2023. 11. 17. 11:25

#1 알고리즘

 

#2 코드

#2-1 자바

import java.util.Arrays;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int[] numberCounts = new int[10001]; // 인덱스 중 0을 제외한 나머지 1 ~ 10000만 사용할 것임
		Arrays.fill(numberCounts, 0);
		
		int lineCount = Integer.parseInt(br.readLine().trim());
		for(int i = 1; i <= lineCount; i++) {
			int number = Integer.parseInt(br.readLine().trim());
			numberCounts[number]++;
		}
		
		br.close();
		
		for(int i = 1; i <= 10000; i++) {
			// numberCount[i]가 0이면, 넘긴다
			if(numberCounts[i] == 0) {
				continue;
			
			// numberCount[i]가 0이 아니라면, numberCount[i]의 값만큼 i를 반복 출력한다
			} else {
				for(int j = 0; j < numberCounts[i]; j++) {
					bw.write(i + " ");
				}
				
			}

			bw.flush(); // bw에 너무 많은 정보가 담기면 메모리 초과가 날 수 있으므로, 중간중간 flush()
		}
		
		bw.close();
	}
}

 

#2-2 코틀린

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))
    
    val numberCounts : Array<Int> = Array(10001) { 0 } // 인덱스 중 0을 제외한 나머지 1 ~ 10000만 사용할 것임

    val lineCount = br.readLine().toInt()
    for(i : Int in 1..lineCount) {
        numberCounts[br.readLine().toInt()]++
    }
    br.close()

    for(i : Int in 1..10000) {
        // numberCount[i]가 0이면, 넘긴다
        if(numberCounts[i] == 0) {
            continue

        // numberCount[i]가 0이 아니라면, numberCount[i]의 값만큼 i를 반복 출력한다
        } else {
            for(j : Int in 1..numberCounts[i]) {
                bw.write("$i\n")
            }
        }

        bw.flush() // bw에 너무 많은 정보가 담기면 메모리 초과가 날 수 있으므로, 중간중간 flush()
    }

    bw.close()
}