알고리즘/백준

10810 - 공넣기

leegeonwoo 2023. 8. 17. 20:35

쉽게 생각하면 간단한 문제이다.

문제를 먼저 이해해보자면 1번부터 순서대로 N번까지 번호가 쓰여진 바구니에 1번부터 N번까지 번호가 적혀있는 공을 집어넣는데,

이 때 공을 넣을때는 반드시 정해진 범위에 같은 번호인 M번의 공을 각각 다른 바구니에 넣고,

그 다음 공을 넣을때는 바구니에 원래 있었던 공은 뺀 뒤에 공을 넣는다.

 

바구니의 개수를 뜻하는 N길이의 int배열을 생성해주고 공을 넣는 행위를 반복하므로 M만큼 반복문의 조건식을 달아준다.

 

공을 넣으려는 바구니의 범위와 공의 숫자를 입력받은 뒤,

for(int j = a - 1; j<= b - 1; j++){

arr[j] = c;

}

위 코드에서 바구니의 시작은 1부터 시작하지만 배열의 index는 0부터 시작하기 때문에 a와 b를 각각 1만큼 빼준다.

package boj;

import java.util.Scanner;

public class b10810 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); //바구니의 개수
		int M = sc.nextInt(); //공을 넣는 횟수 (만큼반복)
		int a = 0; //바구니의 시작범위
		int b = 0; //바구니의 끝 범위
		int c = 0; //바구니에 넣는 공숫자
		
		int[] arr = new int[N];
		for(int i=0; i<M; i++) {
			a = sc.nextInt();
			b = sc.nextInt();
			c = sc.nextInt();
			
			for(int j=a-1; j<=b-1; j++) {
				arr[j] = c;
			}
		}
		for(int i=0; i<arr.length;i++) {
			System.out.print(arr[i] + " ");
		}
		
		

	}

}
728x90