[Java] 백준 1015 (수열 정렬) 자바 문제 풀이

2024. 9. 28. 21:13·BOJ, Programmers

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

 

 

알고리즘 분류

  • 정렬

 

똑같은 두개의 배열을 두고 하나는 비내림차순(오름차순) 으로 정렬할 때

순서에 맞게 index 번호를 출력하는 문제이다.

 

 

우선, StringTokenizer를 사용하여 입력된 수들을 배열에 하나씩 저장하였다.

		StringTokenizer st = new StringTokenizer(br.readLine());
		for (int i = 0; i < temp.length; i++) {
			temp[i] = Integer.parseInt(st.nextToken());
		} // for

 

 

 

 

그 다음, 배열을 복사한 뒤 원본 배열은 Arrays.sort() 함수를 사용하여 오름차순으로 정렬해주었다

		int [] arr = temp.clone();
		Arrays.sort(temp);

 

 

 

이제 두 개의 배열을 비교하며 원래 배열의 각 요소가 정렬된 배열에서 어떤 인덱스에 위치하는지 찾아내었다.

중복되는 값이 있을 수 있으므로, 이미 방문한 인덱스는 -1로 변경하여 중복 처리를 방지하였다.

		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length; j++) {
				if(arr[i] == temp[j]) {
					sb.append(j).append(" ");
					temp[j] = -1;
					break;
				}
			}
		}

 

위 과정을 통해 각 요소의 인덱스를 StringBuilder에 순서대로 저장하였다.

 

아래는 전체 코드이다.

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

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());

		int []temp = new int [N];
		StringTokenizer st = new StringTokenizer(br.readLine());
		for (int i = 0; i < temp.length; i++) {
			temp[i] = Integer.parseInt(st.nextToken());
		} // for
		
		int [] arr = temp.clone();
		Arrays.sort(temp);
		StringBuilder sb = new StringBuilder();
		
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length; j++) {
				if(arr[i] == temp[j]) {
					sb.append(j).append(" ");
					temp[j] = -1;
					break;
				}
			}
		}
		
		System.out.println(sb.toString());
	}
}

 

'BOJ, Programmers' 카테고리의 다른 글

[Java] 백준 12865 (평범한 배낭) 자바 문제 풀이  (0) 2024.10.30
[Java] 백준 1262 (알파벳 다이아몬드) 자바 문제 풀이  (0) 2024.10.23
[Java] 백준 14501 (퇴사) 자바 문제풀이  (0) 2024.04.25
[Java] 백준 2535 (아시아 정보올림피아드) 자바 문제 풀이  (1) 2024.04.18
[Java] 백준 1527 (금민수의 개수) 자바 문제 풀이  (0) 2024.04.15
'BOJ, Programmers' 카테고리의 다른 글
  • [Java] 백준 12865 (평범한 배낭) 자바 문제 풀이
  • [Java] 백준 1262 (알파벳 다이아몬드) 자바 문제 풀이
  • [Java] 백준 14501 (퇴사) 자바 문제풀이
  • [Java] 백준 2535 (아시아 정보올림피아드) 자바 문제 풀이
Economy98
Economy98
공부하고 기록하기
  • Economy98
    Economy_Dev
    Economy98
  • 전체
    오늘
    어제
    • 분류 전체보기 (77)
      • Spring Framework (12)
      • BOJ, Programmers (22)
      • Java (6)
      • JDBC (6)
      • JPA (9)
      • Spring Transaction (3)
      • Algorithm (1)
      • Web (5)
      • Projects (2)
        • 쇼핑몰 프로젝트 (0)
        • 열람실 & 도서관 프로젝트 (2)
      • Network (2)
      • 나의 공부방 (5)
      • 끄적끄적 (1)
      • Error Log (3)
      • CS (0)
  • 블로그 메뉴

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

    • Github
  • 공지사항

  • 인기 글

  • 태그

    백준 풀이
    자바 문제
    자바 문제 풀이
    백준 자바 풀이
    브루트포스 알고리즘
    다이나믹 프로그래밍
    java
    restful api
    스프링부트
    Spring
    백준
    propagation
    자바
    스프링
    예외 처리
    jdbc
    정렬
    JPA
    그리디 알고리즘
    트랜잭션
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Economy98
[Java] 백준 1015 (수열 정렬) 자바 문제 풀이
상단으로

티스토리툴바