1. 문제 상세
https://www.acmicpc.net/problem/10810
2. 문제 접근
크기가 100인 배열을 선언하고 해당 배열을 N 만큼만 사용하며 M번의 작업을 한다.
작업 전에 배열의 0번 부터 N-1번 인덱스까지의 값을 모두 0으로 초기화한다.
각 작업은 배열의 i - 1 번 인덱스 부터 j - 1 번 인덱스까지의 값에 k 값을 저장하는것.
만약 해당 인덱스 범위에 이미 값이 저장되어 있으면 덮어씌운다.
M번의 작업 후 N크기의 배열을 출력한다.
3. 문제 풀이
#include <iostream>
using namespace std;
int main() {
int a[100], n, m, i, j, k;
cin >> n >> m;
for(int x = 0; x < n; x++) a[x] = 0;
for(int x = 0; x < m; x++) {
cin >> i >> j >> k;
for(int y = i - 1; y <= j - 1; y++) a[y] = k;
}
for(int x = 0; x < n; x++) cout << a[x] << " ";
}
크기가 100인 정수형 배열 a 와 정수형 변수 n, m, i, j, k 를 선언.
cin 으로 바구니의 갯수와 공을 넣는 횟수를 입력받아 n과 m에 저장한다.
for문을 사용하여 x가 0일때 부터 n보다 작을 때 1씩 더하며 반복하도록 한다.
반복에서는 배열 a의 x번 인덱스의 값을 0으로 초기화한다.
위 반복문이 끝나면 for문을 사용하여 x가 0일때 부터 m보다 작을 때 1씩 더하며 반복하도록 한다.
반복에서는 cin 으로 인덱스 두 자리와 공의 번호를 입력받아 각각 i, j, k 에 저장한다.
그리고 for문으로 y가 i-1일때부터 j-1보다 작거나 같을 때 까지 1씩 더하며 반복하도록 한다.
이 반복문의 안에서는 배열 a의 y번 인덱스의 값에 k 를 대입한다.
위 반복문이 끝나면 for문으로 x가 0부터 n보다 작을 때 1씩 더하며 반복, cout 으로 배열 a의 x번 인덱스의 값을 출력한다.
4. 성능 확인
5. 마무리
배열의 인덱스는 0부터 시작해서 우리가 지정한 크기보다 1을 뺀 값까지 사용한다.
즉 a[100] 이라고 선언했다면 인덱스는 0~99 이다.
문제에서 배열의 값을 참조할때 주의하자.
'백준 - 단계별로 풀어보기 > 1차원 배열' 카테고리의 다른 글
[백준] 5597번 : 과제 안 내신 분..? | C++ (0) | 2023.09.21 |
---|---|
[백준] 10813번 : 공 바꾸기 | C++ (0) | 2023.09.21 |
[백준] 2562번 : 최댓값 | C++ (0) | 2023.09.21 |
[백준] 10818번 : 최소, 최대 | C++ (0) | 2023.09.21 |
[백준] 10871번 : X보다 작은 수 | C++ (0) | 2023.09.21 |