728x90
본 알고리즘 풀이는 Routine Study에서 진행하고 있습니다.
https://github.com/ROUTINE-STUDY/Algorithm
저를 포함한 구성원이 대부분 초보이므로, 원하시는분은 언제라도 들어오셔도 좋습니다.
문의는 댓글 바람.
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/161990?language=kotlin
[문제 설명]
바탕화면에 모든 파일을 선택하는 사각형을 구하라.
[접근 방법]
가장 작은 x좌표부터 가장 큰 x좌표, 가장 작은 y좌표부터 가장 큰 y좌표가 최소 영역이다.
fun main() {
val solutionObject = Solution()
// test code
println(solutionObject.solution(arrayOf("#...", "....")).contentEquals(intArrayOf(0,0,1,1)))
println(solutionObject.solution(arrayOf("#....")).contentEquals(intArrayOf(0, 0, 1, 1)))
println(solutionObject.solution(arrayOf("#")).contentEquals(intArrayOf(0, 0, 1, 1)))
}
class Solution {
fun solution(wallpaper: Array<String>): IntArray {
// 왼쪽 위가 0,0
// 빈칸 : '.'
// 파일 : '#'
// 최소한의 이동거리를 갖는 한번의 드래그로 모든 파일을 선택해서 지우기.
var minX = Int.MAX_VALUE
var minY = Int.MAX_VALUE
var maxY = Int.MIN_VALUE
var maxX = Int.MIN_VALUE
for (r in wallpaper.indices) {
val line = wallpaper[r]
line.toCharArray().forEachIndexed { idx, block ->
if (block == '#') {
minX = minX.coerceAtMost(idx)
minY = minY.coerceAtMost(r)
maxX = maxX.coerceAtLeast(idx)
maxY = maxY.coerceAtLeast(r)
}
}
}
return intArrayOf(minY, minX, maxY + 1, maxX + 1)
}
}
728x90
반응형
'알고리즘 문제 풀이' 카테고리의 다른 글
프로그래머스 - 미로 탈출(Kotlin) (0) | 2023.03.13 |
---|---|
프로그래머스 - 덧칠하기(Kotlin) (0) | 2023.03.07 |
프로그래머스 - 대충 만든 자판(Kotlin) (0) | 2023.03.03 |
프로그래머스 - 야간 전술 보행(Kotlin) (0) | 2022.11.14 |
프로그래머스 - 푸드 파이트(Kotlin) (0) | 2022.11.11 |