문제
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이 들어있지 않으며, 바구니에는 공을 1개만 넣을 수 있다.
도현이는 앞으로 M번 공을 넣으려고 한다. 도현이는 한 번 공을 넣을 때, 공을 넣을 바구니 범위를 정하고, 정한 바구니에 모두 같은 번호가 적혀있는 공을 넣는다. 만약, 바구니에 공이 이미 있는 경우에는 들어있는 공을 빼고, 새로 공을 넣는다. 공을 넣을 바구니는 연속되어 있어야 한다.
공을 어떻게 넣을지가 주어졌을 때, M번 공을 넣은 이후에 각 바구니에 어떤 공이 들어 있는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다.
둘째 줄부터 M개의 줄에 걸쳐서 공을 넣는 방법이 주어진다. 각 방법은 세 정수 i j k로 이루어져 있으며, i번 바구니부터 j번 바구니까지에 k번 번호가 적혀져 있는 공을 넣는다는 뜻이다. 예를 들어, 2 5 6은 2번 바구니부터 5번 바구니까지에 6번 공을 넣는다는 뜻이다. (1 ≤ i ≤ j ≤ N, 1 ≤ k ≤ N)
도현이는 입력으로 주어진 순서대로 공을 넣는다.
문제 출처 : 백준 10810번 공넣기 문제
문제 이해하기
5 4
1 2 3
3 4 4
1 4 1
2 2 2
위 와 같이 입력시
4개의 줄을 통해
ㅁ ㅁ ㅁ ㅁ ㅁ 5개의 배열에 입력되어서 나오는 값을 구하는 문제이다.
1) 첫번째 줄 1 2 3을 입력시 배열은
1 ~ 2번째 배열에 입력해주어야 하고
3 3 ㅁ ㅁ ㅁ
2) 두번째 줄 3 4 4을 입력시 배열은
3 ~ 4번째 배열에 입력해주어야 하고
3 3 4 4 ㅁ
3) 세번째 줄 1 4 1 을 입력시 배열은
1 ~ 4번째 배열이 이미 입력되어져있으므로
1 1 1 1 ㅁ 이렇게 출력이 되어야하고
4) 4번째 줄 2 2 2 을 입력시 배열은
2번째 배열이 이미 입력되어져있으므로
1 2 1 1 ㅁ 이렇게 출력이 되어야 한다.
배열에 값이 없을시 0이 출력 되어야 함으로
최종으로는 1 2 1 1 0으로 출력 되어진다.
문제 출력 식
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] array = new int[num];
int line = sc.nextInt();
for (int i = 0; i < line; i++) {
int start = sc.nextInt();
int end = sc.nextInt();
int ball = sc.nextInt();
for (int j = start - 1; j < end; j++) {
array[j] = ball;
}
}
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}
'코테 공부' 카테고리의 다른 글
자료구조 - 배열 (0) | 2023.04.12 |
---|---|
시간복잡도 (0) | 2023.04.12 |
[백준] 1546번 평균 - Java (0) | 2023.04.12 |
[백준]10813번 문제 공바꾸기 - Java (0) | 2023.04.12 |
[백준] 10818번 최소, 최대 (0) | 2023.04.11 |