2025. 10. 6. 01:27ㆍ알고리즘
문제링크
난이도
레벨 3
유형
구현, 구간합, 누적합
소요시간
1시간 못품, 카카오 풀이 참고
회고
첫 풀이에서 정확성 테스트는 통과했으나, 효율성 테스트는 떨어졌다. 연산을 하지 않고, 누적해놨다가, 한 번에 반영을 하는 방향으로 고민을 해봤다. 하지만 그래도 여전히 전체 배열을 순회하기에 시간복잡도를 줄이기에는 부족했다. JPEG 압축처럼 연산을 줄여보려고 고민했지만 결국 시간이 너무 지나서 카카오 풀이를 보고 문제를 풀었다.
질문 게시판에 사고 과정을 나타낸 글이 있었는데, 앞으로 이런식으로 사고를 해보면 좋을 것 같다.
https://school.programmers.co.kr/questions/30876
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
구간합, 누적합에 대한 풀이가 잘 나와있는 포스트
https://twd0622.tistory.com/109
[알고리즘] 누적합 (Prefix Sum)
누적합(Prefix Sum)은 배열 또는 리스트 등에서 일정 구간의 합을 빠르게 계산하기 위한 방법이면서 동적 계획법(DP)의 형태 중 하나이다.기본적인 방식은 각 요소까지의 누적합을 계산하여 이를 배
twd0622.tistory.com
코드
import Foundation
func solution(_ board:[[Int]], _ skill:[[Int]]) -> Int {
var board = board
var prefixSum = Array(repeating: Array(repeating: 0, count: board[0].count + 1), count: board.count + 1)
func acc(_ skill: [Int]) {
let (type, sr, sc, er, ec, degree) = (skill[0], skill[1], skill[2], skill[3], skill[4], skill[5])
prefixSum[sr][sc] += degree * (type == 1 ? -1 : 1)
prefixSum[sr][ec + 1] -= degree * (type == 1 ? -1 : 1)
prefixSum[er + 1][sc] -= degree * (type == 1 ? -1 : 1)
prefixSum[er + 1][ec + 1] += degree * (type == 1 ? -1 : 1)
}
for round in (0..<skill.count) {
acc(skill[round])
}
// 누적합 가로
for i in (0..<board.count) {
for j in (1..<board[0].count) {
prefixSum[i][j] += prefixSum[i][j - 1]
}
}
// 누적합 세로
for j in (0..<board[0].count) {
for i in (1..<board.count) {
prefixSum[i][j] += prefixSum[i - 1][j]
}
}
var answer = 0
for i in (0..<board.count) {
for j in (0..<board[0].count) {
if board[i][j] + prefixSum[i][j] > 0 {
answer += 1
}
}
}
return answer
}
https://tech.kakao.com/posts/488
2022 카카오 신입 공채 1차 온라인 코딩테스트 for Tech developers 문제해설 - tech.kakao.com
지난 2021년 9월 11일 토요일 오후 2시부터 7시까지 5시간 동안 2022 ...
tech.kakao.com
'알고리즘' 카테고리의 다른 글
| [코딩테스트] 😀 이모티콘 행사 - Kakao2023 (0) | 2025.10.07 |
|---|---|
| [코딩테스트] 🔥 마법 상어의 파이어스톰 - BJ20058_G3 (0) | 2025.10.06 |
| [코딩테스트]🪧미로 찾기 - Kakao 2023 (1) | 2025.10.04 |
| [코딩테스트 + 성능 회고] 🎯 양궁대회 - Kakao 2023 (0) | 2025.10.03 |
| [코딩테스트] 🐷 포현 가능한 이진 트리 - KAKAO 2023 (0) | 2025.10.03 |