Problem Solving/항해99

99클럽 코테 스터디 3일차 TIL + 구현

wrathlion 2025. 4. 3. 01:27

문제

Programmers: 바탕화면 정리

  • 설명: 파일의 위치가 주어졌을 때 최소한으로 스크롤하여 모든 파일을 선택하라

풀이

  • 가장 가장 위쪽 파일의 $y$ 좌표, 왼쪽에 있는 $x$좌표, 가장 아래쪽의 $y$ 좌표, 가장 오른쪽은 $x$ 좌표가 답이다.
  • 이때 마지막 두 값은 파일의 끝을 가리켜야하므로 $파일의 인덱스 + 1$을 해준다.

오늘의 회고

  • 정렬해서 푸려고 했지만 예제의 하트처럼 왼쪽, 위쪽이 애매할 땐 정렬 기준이 애매하여
  • 모든 파일을 아우르는 직사각형을 만들어야한다는 점을 깨닫고 이를 구현하였다.

Code

def solution(wallpaper):
    ans = [50, 50, 0, 0]
    for i in range(len(wallpaper)):
        for j in range(len(wallpaper[i])):
            if wallpaper[i][j] == '#':
                ans[0] = min(ans[0], i)
                ans[1] = min(ans[1], j)
                ans[2] = max(ans[2], i + 1)
                ans[3] = max(ans[3], j + 1)

    return ans