알고리즘

[프로그래머스] Lv1. 바탕화면 정리

j9972 2023. 3. 8. 13:51
728x90

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

접근

그림으로 그려보면 결국 알수있는 점은

x1 = 가장 위쪽 , y1 = 가장 왼쪽

x2 = 가장 아래쪽 , y1 = 가장 오른쪽 

을 표현하면 된다! 이다.

 

표현하기 위해서 x1,x2,y1,y2를 각각 초기화 해주고 ( 초기화는 범위를 잘 체크해주면 된다 ) , '#' 이 나올때마다 그 위치의 값을 적용시켜주면 된다.

참고로, elif i > x2 같은 코드를 적으면 #이 한개있을때를 만족못시켜준다

 

 

코드

def solution(wallpaper):
    # 초기화
    x1,y1 = 50,50 # 가장 위, 가장 왼쪽
    x2,y2 = 0,0 # 가장 아래, 가장 오른쪽
    
    n = len(wallpaper)
    m = len(wallpaper[0])
    
    for i in range(n):
        for j in range(m):
            if wallpaper[i][j] == '#':
                if i < x1:
                    x1 = i
                if i > x2:
                    x2 = i
                if j < y1:
                    y1 = j
                if j > y2:
                    y2 = j
    
    return [x1,y1,x2+1,y2+1]