코딩문제풀이/Baekjoon

[Java] 백준 2751번 : 수 정렬하기 2

코딩하는 포메라니안 2022. 12. 31. 15:16

1. 문제

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

 

2751번: 수 정렬하기 2

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

 

 

2. 풀이과정

1. 중복된 수가 들어오지 않으므로, 1차원 배열에 값이 있는지 여부를 기록한다.

2. 배열의 index는 절댓값이 1_000_000이하이기 때문에, 음수도 가능하므로 (들어온 값) + 1_000_000으로 하여 값을 true로 바꿔준다.

3. 출력할 때, 배열을 처음부터 끝까지 돌면서 true면 (index값) - 1_000_000하여 결과를 출력한다.

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int su = Integer.parseInt(br.readLine());
        boolean arr[] = new boolean[2_000_001];
        for(int i=0; i<su; i++){
            arr[Integer.parseInt(br.readLine())+1_000_000] = true;
        }

        StringBuilder sb = new StringBuilder();
        for(int i=0; i<=2_000_000; i++){
            if(arr[i]){
                sb.append(i-1_000_000).append("\n");
            }
        }
        System.out.println(sb);
    }
}

 

 

결과