본문 바로가기
백준 문제 풀이/1차원 배열

(#10810 Java) 공 넣기

by _비니_ 2023. 8. 4.
문제

 

 

문제 이해

 

문제를 제대로 이해하는 것 부터 시작해야 할 것 같다.

 

위에서 보여준 예제를 통해 간단히 요약하자면, 

5 4 => 5개의 바구니가 있고, 공을 4번의 방법으로 넣는다.
1 2 3 => 1번부터 2번까지의 바구니에 3번 공을 넣는다. 즉 현재 상태는 3 3 0 0.0 이 되는 것
3 4 4 => 위와 같은 원리로 3번부터 4번까지의 바구니에 4번 공을 넣음. 즉 3 3 4 4 0
1 4 1 => 1번부터 4번까지 1번 공! 현재 상태는 1 1 1 1 0
2 2 2 => 2번부터 2번까지 2번 공을 넣어줌. 즉 결과 : 1 2 1 1 0 이 출력되는 것!

 

문제 해결

 

그럼 이를 코드로 어떻게 구현해야 할까?

 

우선 바구니의 개수와 공을 몇 번의 방법으로 넣을지 입력을 받아야 한다.

Scanner in = new Scanner(System.in);

int N = in.nextInt(); //바구니 개수
int M = in.nextInt(); //공을 넣는 방법의 수

 

배열 생성 ( 바구니 개수 + 1 )

int [] array = new int[N+1];

 

3개의 정수 입력 받기 ( 시작 번호 / 끝 번호 / 공 번호 )

int start = 0;
int end = 0;
int ball = 0;

 

M만큼 start, end, ball을 입력 받아야하므로 for 문 사용해 입력받고, 공의 번호를 해당 바구니들에 저장★

for (int i = 0; i < M; i++) {
	start = in.nextInt();
    end = in.nextInt();
    ball = in.nextInt();
    
    for(int j = start; j <= end; j++) { //입력 받은 공의 번호(ball)를 start부터 end까지 저장
    	array[j] = ball;
    }
}

 

최종적으로 바구니에 담김 숫자들 출력하는 코드

for(i=1; i < array.length; i++) {
	System.out.print(array[i] + " ");
}

 

이 문제에서는 배열을 N+1개로 작성하는 것이 포인트였던 것 같다.

만약 N개로 생성해줬더라면 인덱스 번호가 0부터 시작이므로 한 칸씩 뒤로 이동해야 했을 것..

난 복잡해 꼬이는 거 보단 그냥 N+1로 작성하고 바구니 개수와 인덱스 번호를 맞추는 게 편하당 !! ㅎ ㅎ

 

 

최종 코드

 

import java.util.Scanner;

public class Main {
	public static void main(String[] atgs){
		
		Scanner in = new Scanner(System.in);
		
		int N = in.nextInt();
		int M = in.nextInt();
		
		int[] array = new int[N+1];
		
		int i = 0; //start
		int j = 0; //end
		int k = 0; //ball
		
		for(int cnt = 0; cnt < M; cnt++) {
			i = in.nextInt();
			j = in.nextInt();
			k = in.nextInt();
            
			for(int cnt2 = i; cnt2 <= j; cnt2++) {
				array[cnt2] = k;
			}
		}
        
		for(i = 1; i < array.length; i++) {
			System.out.print(array[i] + " ");
		}
	}
}
반응형

'백준 문제 풀이 > 1차원 배열' 카테고리의 다른 글

(#5597 Java) 과제 안 내신 분..?  (0) 2023.08.09
(#10813 Java) 공 바꾸기  (0) 2023.08.08
(#2562 Java) 최댓값  (0) 2023.08.03
(#10818 Java) 최소, 최대  (0) 2023.08.03
(#10871 Java) X보다 작은 수  (0) 2023.08.03