[프로그래머스] [파이썬] 바탕화면 정리

[14일차] [코딩테스트] [LV.1]

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

문제 설명

귀찮… 어렵…

제한사항

  • 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를 만족해야 합니다.

입출력 예

wallpaperresult
[”.#…”, “..#..”, “…#.”][0, 1, 3, 4]
[“……….”, “…..#….”, “……##..”, “…##…..”, “….#…..”][1, 3, 5, 8]
[”.##…##.”, “#..#.#..#”, “#…#…#”, “.#…..#.”, “..#…#..”, “…#.#…”, “….#….”][0, 0, 7, 9]
[”..”, “#.”][1, 0, 2, 1]

입출력 예 설명

입출력 예 #1

문제 설명의 예시와 같은 예제입니다. (0, 1)에서 (3, 4)로 드래그 하면 모든 파일을 선택할 수 있고 드래그 한 거리는 6이었고, 6보다 적은 거리로 모든 파일을 선택하는 방법은 없습니다. 따라서 [0, 1, 3, 4]를 return합니다.

입출력 예 #2

image

(1, 3)에서 (5, 8)로 드래그하면 모든 파일을 선택할 수 있고 이보다 적은 이동거리로 모든 파일을 선택하는 방법은 없습니다. 따라서 가장 적은 이동의 드래그로 모든 파일을 선택하는 방법인 [1, 3, 5, 8]을 return합니다.

입출력 예 #3

image

모든 파일을 선택하기 위해선 바탕화면의 가장 왼쪽 위 (0, 0)에서 가장 오른쪽 아래 (7, 9)로 드래그 해야만 합니다. 따라서 [0, 0, 7, 9]를 return합니다.

🚀 정답 ⭕

내 풀이


def solution(wallpaper):
    # 가장 왼쪽 점이 가장 오른쪽 점보다 위냐 아래냐가 중요할 듯 
    
    # 가장 왼쪽 위 
    leftest = 51        # 문제 조건에 명시되어있음
    upest = 51
    # 가장 오른쪽 아래
    rightest = -1 
    downest = -1
    for x in range(len(wallpaper)):
        for y in range(len(wallpaper[x])):
            if wallpaper[x][y] == '#':
                if x < leftest:
                    leftest = x
                if y < upest:
                    upest = y
                if x > rightest:
                    rightest = x 
                if y > downest:
                    downest = y 
    # answer = abs(leftest-(rightest+1))+abs(upest-(downest+1))
    return [leftest,upest,rightest+1,downest+1]

다른 사람 풀이


def solution(wall):
    a, b = [], []
    for i in range(len(wall)):
        for j in range(len(wall[i])):
            if wall[i][j] == "#":
                a.append(i)
                b.append(j)
    return [min(a), min(b), max(a) + 1, max(b) + 1]

끙… 왜 다른 사람 풀이 처럼 충분히 할 수 있는데 왜 저렇게 생각이 나지 않았을까….


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기


© 2020. All rights reserved.

따라쟁이