알고리즘/문제

[프로그래머스] Lv. 1 - 바탕화면 정리

KoreaMango 2024. 11. 17. 22:29

제목: Lv. 1 - 바탕화면 정리
시간: 20분


가볍게 프로그래머스에서 제목이 끌리는대로 한번 풀어봤습니다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/161990

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

바탕화면에 있는 아이콘을 드래그했을 때 어떻게 해야 최소 넓이를 가진 사각형으로 드래그를 할 것인가

를 구하는 문제입니다.

 

import Foundation

func solution(_ wallpaper:[String]) -> [Int] {
    // 가장자리 왼쪽 위 : 0, 0 (세로, 가로)
    // 빈칸 . , 파일이 # 
    
    // 가장 왼쪽에 있는 lux,
    // 가장 위에있는 y
    // 가장 오른쪽에 있는 rdx
    // 가장 아래쪽에 있는 y
    
    var lux = 50
    var luy = 50
    var rdx = 0
    var rdy = 0

    for (rowIndex, rowValue) in wallpaper.enumerated() {
        for (colIndex, colValue) in rowValue.enumerated() {
            if (colValue == "#") {
                if (luy > colIndex) {
                    luy = colIndex
                }
                if (lux > rowIndex) {
                    lux = rowIndex
                }
                if (rdy < colIndex + 1) {
                    rdy = colIndex + 1
                }
                if (rdx < rowIndex + 1) {
                    rdx = rowIndex + 1
                }
            }
        }
    }
    
    return [lux, luy, rdx, rdy]
}

 

문제를 읽고 의식의 흐름대로 가장 바깥에 있는 파일을 구하는 방식으로 했는데 정답이 되었네요.

 

코테를 오랜만에 해서 글 읽는거랑, 변수, 함수들 기억하느라 조금 시간이 생각보다 오래 걸린거 같아요.

 

다 풀고 다른 사람 풀이도 봤는데 다들 비슷하게 푸신 것 같더라구요.

 

그 중 인상 깊었던 것은 값 비교 할 때, 그냥 min max 쓰신 분이 인상 깊었던 것 같네요.

조건문이 들어간 3줄 코드를 1줄로 해버리니 깔끔해 보이더라구요.

 

다음엔 조금 더 복잡한 문제로 해보고싶네요.