본문 바로가기

알고리즘/🥈 실버

백준 1138 한 줄로 서기 자바 풀이

728x90

난이도 : 실버2

풀이일 07252

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

 

1138번: 한 줄로 서기

첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다

www.acmicpc.net


링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐


풀이 코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		
		int N = scan.nextInt();
		int[] array = new int[N];
		
		for (int i = 0; i < N; i++) {
			int order = scan.nextInt();
			int temp = 0;
			
			for (int j = 0; j < N; j++) {
				// 왼쪽에 올 큰 수 만큼 건너 뛴 후, 빈 자리에 숫자 추가
				if (order == temp && array[j] == 0) {
					array[j] = i+1;
					break;	
				}
				// 만약 아직 채워지지 않은 자리는 더 큰 수 자리
				if (array[j] == 0) {
					temp += 1;
				}
			}
		}
		for (int k = 0; k < N; k++) {
			System.out.print(array[k]+" ");
		}
	}
}
  • N 크기의 배열 생성 후, 배열 채우는 방식으로 풀이
  • 왼 쪽엔 현재 i 보다 큰 수가 위치하므로, 0의 수를 더 큰 앞 수의 개수만큼 센 후 빈자리에 i+1 기록

느낀점

매일 비슷한 문제만 푸니까 잘 늘지 않는 것 같다.

파이썬으로 풀었던 문제를 자바로 다시 풀어보는 시도를 주말에 해봐야겠다.