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

채채·2023년 3월 3일
0

프로그래머스 Lv.1

목록 보기
1/2

✅ 문제 링크

바탕화면 정리 - 프로그래머스


✅ 문제 설명

  • 컴퓨터 바탕화면의 파일을 모두 지울 수 있도록, ✌드래그✌ 하시오!
  • 바탕화면 = 격자판, 입력값 = 정사각형으로 이루어진 격자판을 나타내는 문자열 배열 wallpaper
  • 점 S -> 점 E 로 드래그
  • 드래그한 크기 (E의 좌표 - S의 좌표) 가 최소가 되어야 함
  • S, E의 x, y 좌표를 return

wallpaper = [".#...", "..#..", "...#."]인 바탕화면


✅ 제한사항

  • 1 ≤ wallpaper의 길이 ≤ 50
  • 1 ≤ wallpaper[i]의 길이 ≤ 50
  • wallpaper의 모든 원소의 길이는 동일합니다.
  • wallpaper[i][j]는 바탕화면에서 i + 1행 j + 1열에 해당하는 칸의 상태를 나타냅니다.
  • wallpaper[i][j]는 "#" 또는 "."의 값만 가집니다.
  • 바탕화면에는 적어도 하나의 파일이 있습니다.
  • 드래그 시작점 (lux, luy)와 끝점 (rdx, rdy)는 lux < rdx, luy < rdy를 만족해야 합니다.

✅ 나의 풀이

📌 idea : 어쨌든 모두 포함시켜야 한다.

  1. 가장 최소로 드래그해야 하지만, 바탕화면 속의 모든 파일을 지워야 함
  2. 그러면 최소한 파일이 있는 좌표는 모!두! 고려해야 하오
  3. So, 파일이 있는 최소 x좌표와 최소 y좌표를 S로 잡고 + 파일이 있는 최대 x좌표와 최대 y좌표를 E로 잡으면 됨
  • 주의할 점은 만약 파일 기준 왼쪽 점을 index로 생각한다면, 최대 x, y 좌표는 각각 +1 해줘야 한다는 것

✅ CODE

def solution(wallpaper):
    answer = []
    a = []
    num = 0
    minX = 100
    minY = 100
    maxX = 0
    maxY = 0

    for i in range(len(wallpaper)):
        for j in wallpaper[i]:
            if j == '#':
                a.append([i, num])
            num += 1
        num = 0

    for i in a:
        if minX>i[0]:
            minX = i[0]
        if minY>i[1]:
            minY = i[1]
        if maxX<i[0]:
            maxX = i[0]
        if maxY<i[1]:
            maxY = i[1]


    return [minX, minY, maxX+1, maxY+1]

✅ In the End..

아직 Lv.1 통과에도 기뻐하는 코린이(and 코테린이) 지만...
시작이 반이랬다! 매우 뿌듯!
열심히 달려보자 🏃‍♀️

profile
성장하는 사람

0개의 댓글