간략하게 설명하자면 각각 번호가 써져있는 바구니 N개를 가지고 각 바구니에는 공을 1개만 넣을 수 있습니다.
그리고 M번 공을 넣을 것이고 공을 넣을 때마다 범위를 정하고 정한 바구니에 모두 같은 번호의 공을 넣습니다.
공이 이미 있다면 빼고 넣습니다.
마지막은 모든 바구니의 공을 출력하는 것입니다.
입력은 첫째줄에 N, M이 주어집니다.
둘째 줄부터 M개의 줄까지 공을 넣고 빼는 방법이 주어집니다.
각 방법은 세 정수로 이루어져 있습니다.
ex) 입력 : a b c ⮕ a 바구니부터 b 바구니까지 c라는 번호의 공을 넣는다.
그럼 이제 시작해보겠습니다.
우선 코드부터 보여드리겠습니다.
배열을 사용한 방법입니다.
using namespace std; 로 std:: 를 생략하였습니다.
배열은 arr[101] = {0,}; 으로 모든 값을 0으로 선언과 동시에 초기화해주었습니다. (7)
cin >> n >> m; 으로 n (배열 범위), b (바꿀 범위) 를 입력받았습니다.
그 다음 m번 반복할 수 있는 반복문을 만들어주었고 문제에서 세 정수를 각각 a, b, c로 대체하였습니다.
반복할 때마다 a b c를 초기화해주고 (11~12) 그 다음 이중 반복문으로 a부터 b까지의 범위 값을 c로 바꿨습니다. (13~14)
여기까지했다면 이제 출력만 남았습니다.
헷갈리시면 안되는 점이 있는데 arr 배열의 index 0 값은 출력하지 않습니다.
(1 <= a <= b <= n) 이기 때문입니다.
물론 index 0 값까지 바꿔서 했다면 상관은 없지만 제 코드에서는 출력을 index 1부터 시작합니다.
그렇기에 int i의 값을 1로 바꿔주었습니다.
간단(?)하게 마무리했네요. 설명에서 부족한 부분이 있었다면 댓글로 알려주시기 바랍니다. (전 12트만에 성공했습니다.)
'백준' 카테고리의 다른 글
백준 2941 c++ 풀이 (0) | 2024.07.09 |
---|---|
백준 9086 c++/python 풀이 (0) | 2024.03.30 |
백준 5597 c++ 풀이 (0) | 2024.03.16 |
백준 10813 c++ 풀이 (0) | 2024.03.06 |
백준 2562 c++ 풀이 (1) | 2024.02.21 |