https://www.acmicpc.net/problem/15724
문제
네모 왕국의 왕인 진경대왕은 왕국의 영토를 편하게 통치하기 위해서 1X1의 단위 구역을 여러 개 묶어서 하나의 거대 행정구역인 주지수(州地數, 마을의 땅을 셈)를 만들 예정이다. 진경대왕은 주지수를 만들기 위해서 일정한 직사각형 범위 내에 살고 있는 사람 수를 참고 자료로 쓰고 싶어한다.
진경대왕은 굉장히 근엄한 왕이기 때문에 당신에게 4개의 숫자로 직사각형 범위를 알려줄 것이다.
예를 들어, 위와 같이 사람이 살고 있다고 가정할 때 <그림 1>의 직사각형 범위의 사람 수를 알고 싶다면 진경대왕은 네 개의 정수 1 1 3 2를 부를 것이다. 마찬가지로 <그림 2>는 1 1 1 4, <그림 3>은 1 1 4 4가 될 것이다.
진경대왕을 위하여 이 참고 자료를 만들어내는 프로그램을 작성해보자.
문제 코드
문제 풀이
문제를 스스로 잘 풀어내지 못해서 인터넷 속의 코드를 많이 참고했습니다..ㅠㅠ
영토의 크기를 뜻하는 변수 n,m 과 출력할 누적합 변수 ans, 직사각형의 범위를 뜻하는 변수 a,b,c,d 와 영토의 사람들의 수를 입력받을 배열 arr, 누적합 계산을 저장할 배열 x 을 선언했습니다. 처음에 변수 선언을 할 때 main 문 안에다 두었는데 전역변수로 두지 않으면 중복 계산이 이루어져 시간 초과 오류가 뜨는 듯 합니다. 그래서 전역변수로 선언해주고 main 문 안에서 코드를 작성해도 오류가 떴었는데 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 구문을 추가해주니 시간 초과 오류가 해결됐습니다. 그 후 이중 for 문을 사용하여 arr배열의 값들을 입력받습니다. 그리고 그 값들을 x배열에 합해서 넣어 누적합을 저장하는 x배열의 값들을 채워넣습니다. 그 후 원하는 반복횟수를 입력받고 for문을 사용하여 반복횟수 만큼 원하는 범위의 합들을 출력해줍니다.
'Koala - 11기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/python] 17779 게리맨더링 2 (0) | 2023.08.10 |
---|---|
[백준 / Python] 8983 사냥꾼 (0) | 2023.08.06 |
[백준/C++] 6236번 : 용돈관리 (0) | 2023.08.06 |
[백준/python] 1920번 수 찾기 (0) | 2023.08.06 |
[백준/Python] 16507번 : 어두운 건 무서워 (0) | 2023.08.06 |