yunyj99
라둥이
yunyj99
GitHub
전체 방문자
오늘
어제
  • 분류 전체보기 (309)
    • 1. 프로그래밍 (50)
      • 1-1. Git (17)
      • 1-2. Java (13)
      • 1-2-1. Java GUI (1)
      • 오류 (12)
      • 기타 (7)
    • 2. Front-end (57)
      • 2-1. HTML (5)
      • 2-2. CSS (19)
      • 2-3. Java Script (33)
      • 2-4. React (0)
    • 3. Back-end (47)
      • 3-1. Spring MVC - 국비 (15)
      • 3-2. Spring MVC - 남궁성 (30)
      • 3-3. Spring - 김영한 (2)
    • 4. Android (1)
    • 5. DB (20)
      • 4-1. MySQL DBMS (20)
    • 6. 자료구조 & 알고리즘 (44)
      • 6-1. 자료구조 (14)
      • 6-2. 백준 (30)
    • 7. 웹 디자인 (7)
      • 7-1. UX 디자인 (7)
    • 8. 자격증 (35)
      • 8-1. 정보처리기사 (35)
    • 프로젝트 (3)
      • 프로젝트 기록 (3)
    • etc... (43)
      • 패스트캠퍼스 챌린지 (39)
      • 잡담 (4)

블로그 메뉴

  • 홈
  • 태그

최근 글

티스토리

hELLO · Designed By 정상우.
yunyj99

라둥이

쓰기
6. 자료구조 & 알고리즘/6-2. 백준

2751번: 수 정렬하기 2

2022. 7. 1. 01:09

수 정렬하기 2 

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

 

입력

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

 

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

 

예제 입력 1 

5
5
4
3
2
1

예제 출력 1 

1
2
3
4
5

 

 


우선 내가 처음 푼 방식.

stream을 이용해 int배열에 값을 넣은 후, 정렬해서 출력시켰다.

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

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 N = Integer.parseInt(br.readLine());
		int[] nums = new int[N];

		for (int i = 0; i < N; i++) {
			nums[i] = Integer.parseInt(br.readLine());
		}
		Arrays.sort(nums);
		for (int i : nums) {
			bw.write(i + "\n");
		}

		bw.flush();
		bw.close();
		br.close();
	}
}

 

 


아래는 다른 분들 코드를 참조해서 푼 방식!

절대값이 1000000만 이하가 나오는 수 이므로, 1000000*2+1 크기의 boolean 배열을 생성했다.

음수로 입력받은 값도 모두 양수로 담을 수 있도록 수를 입력받으면(num)  nums배열에서 MAX+num 인덱스에 true 값을 넣어주었다.

그리고 MAX+num 인덱스에 true를 넣어줬으므로, 출력할때는(마지막 for문) i - MAX 값을 출력시키도록 했다.

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

public class Main {

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

		final int MAX = 1000000;
		int N = Integer.parseInt(br.readLine());
		boolean[] nums = new boolean[MAX * 2 + 1];

		for (int i = 0; i < N; i++) {
			int num = Integer.parseInt(br.readLine());
			nums[MAX + num] = true;
		}

		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < MAX * 2 + 1; i++) {
			if (nums[i]) {
				sb.append(i - MAX + "\n");
			}
		}

		System.out.println(sb);
		br.close();
	}
}

 

 


 

'6. 자료구조 & 알고리즘 > 6-2. 백준' 카테고리의 다른 글

백준 - [1181번: 단어 정렬 ]  (0) 2022.07.30
백준 - [1436번: 영화감독 숌]  (0) 2022.07.29
백준 - [1018번: 체스판 다시 칠하기]  (0) 2022.06.27
백준 - [2793번: 블랙잭]  (0) 2022.06.23
백준 - [2447번: 별 찍기 - 10]  (0) 2022.06.21
    '6. 자료구조 & 알고리즘/6-2. 백준' 카테고리의 다른 글
    • 백준 - [1181번: 단어 정렬 ]
    • 백준 - [1436번: 영화감독 숌]
    • 백준 - [1018번: 체스판 다시 칠하기]
    • 백준 - [2793번: 블랙잭]
    yunyj99
    yunyj99
    개발자를 목표로 하는, 새싹처럼 성장하고 싶은 사람의 학습 공간 ^v^

    티스토리툴바