저고데

[프로그래머스]바탕화면 정리 본문

프로그래머스

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

진철 2023. 3. 7. 22:31
728x90
반응형

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/161990

 

프로그래머스

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

programmers.co.kr

드래그 해야하는 최소의 범위를 구해야하기 때문에 파일이 있는 곳에서 x, y 좌표가 가장 큰 것과 작은 것을 구하면 된다.

코드를 작성하는 순서는 다음과 같다.

1. 파일이 있는 좌표를 모두 구해준다.

2. x, y의 최댓값과 최솟값을 구하기 위해서 정렬을 해준다.

3. 각각의 첫번째 값을 답에 넣어준다.

 

def solution(wallpaper):
    answer = []
    sharp = []
    for i in range(len(wallpaper)):
        for j in range(len(wallpaper[i])):
            if wallpaper[i][j] == '#':
                sharp.append([i, j]) #1번
    sharp.sort(key = lambda x : x[0]) #2번 : x의 최솟값
    answer.append(sharp[0][0])
    sharp.sort(key = lambda x : x[1]) #2번 : y의 최솟값
    answer.append(sharp[0][1])
    sharp.sort(key = lambda x : -x[0]) #2번 : x의 최댓값
    answer.append(sharp[0][0]+1) #문제에서 제시된 마우스와 파일의 좌표가 다르므로 1을 더해주어야한다.
    sharp.sort(key = lambda x : -x[1]) #2번 : y의 최댓값
    answer.append(sharp[0][1]+1) #마찬가지로 1을 더해준다.
    return answer

필자는 정렬을 통하여 최대, 최솟값을 구했다.

다른 방법을 사용할수도 있었지만, 다음과 같은 방법이 직관적이고 편한 방법인듯하다.

728x90
반응형