티스토리 뷰
유명 IT회사의 문제로 이와 비슷한 문제가 수록된 적이 있습니다. 역시 DP였습니다. 그때짠 코드는 완전히 비효율적인 코드를 짰었기 때문에 시간 초과가 났지만, 이번 기회에 풀이법을 알게되었습니다. 저는 구간 합이라는 개념을 아에 모르고 있었습니다. 물론 광고삽입(2021카카오 공채)에서 출제된 문제에도 구간 합과 비슷한 개념이 들어가지만, 그걸 적용을 못했습니다. 생각이 닫혀 있는거 같아요..
결국 문제 풀이 관건은 주어진 배열을 돌면서 (0,0)부터 (x,y)까지의 값을 행렬의 모든 원소에 적용하는 것입니다. 그리고 난 뒤에 구할 부분만 싹 빼면 되기 때문에 쉽게 접근할 수 있는 문제였습니다. 관련된 문제를 몇개 더 풀어봐야겠네요. 이김에 확실히 잡아보죠.
그리고 이 문제도 코틀린 코드로 바꿔서 해봐야겠습니다.
아래는 정답 코드입니다.
import sys
n, m = map(int, input().split())
arr = [[0] * (n + 1)]
for _ in range(n):
arr.append([0]+list(map(int, sys.stdin.readline().split())))
for i in range(1, n+1):
for j in range(1, n):
arr[i][j+1] += arr[i][j]
for j in range(1, n+1):
for i in range(1, n):
arr[i+1][j] += arr[i][j]
for _ in range(m):
x1, y1, x2, y2 = map(int, sys.stdin.readline().split())
print(arr[x2][y2] - arr[x1-1][y2] - arr[x2][y1-1] + arr[x1-1][y1-1])
출처: gramm님의 블로그!
'알고리즘 > BeakJoon' 카테고리의 다른 글
[BOJ] 구간 합 구하기 4 in Kotlin (0) | 2021.12.14 |
---|---|
[BOJ] 구간 합 구하기 4 in Python (0) | 2021.12.13 |
[BOJ] 숨박꼭질 3 in Python (0) | 2021.12.03 |
[BOJ] 청소년 상어 (0) | 2021.12.03 |
[BOJ] 2468 안전 영역 in Python (0) | 2021.11.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 비전공싸피합격
- Java #객체지향 #상속 #생성자 #개념 #비전공개발자 #FullStack을 #향해
- 기본생성자
- DP
- 추가합격후기
- 알고리즘
- 프로그래머스
- 안드로이드 #안드로이드스튜디오 #Kotlin #앱개발 #안드로이드기초 #비전공개발자 #풀스택개발자 #앱개발자
- Class
- Java
- 생성자
- 구간 합 구하기 4
- 참조연산자
- 코틀린
- 백준 #숨박꼭질3 #다익스트라 #알고리즘 #비전공개발자 #풀스택 #웹개발 #앱개발 #안드로이드 #python
- 카카오
- Kotlin
- 앱개발
- Python
- 일반파라미터
- 프로젝트구조
- 중첩클래스와 내부클래스
- 보조생성자
- 안드로이드
- 백준
- Programmers #알고리즘 #Python #KAKAOINTERNSHIP #비전공개발자 #불량사용자
- 비전공개발자
- 백준알고리즘 #BFS #델타이동 #알고리즘풀이 #개발 #안전영역 #풀스택개발자가되고싶습니다. #노력할래요 # 꾸준히 # 화이팅! #비전공개발자
- 싸피5기
- kotlin문법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함