문제
https://school.programmers.co.kr/learn/courses/30/lessons/161990
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
def solution(wallpaper):
row, col = [], []
for i in range(len(wallpaper)):
for j in range(len(wallpaper[0])):
if wallpaper[i][j] == '#':
row.append(i)
col.append(j)
return [min(row), min(col), max(row) + 1, max(col) + 1]
설명
아예 접근 조차 못했다..
<알고리즘 설명> (입출력 예제 2번)
1. 첫 행~ 마지막 행 에 있는 파일 중에 제일 처음 파일이 있는 행과 마지막에 파일에 있는 행을 찾자.

2. 첫 열 ~ 마지막 열에 있는 파일 중에 제일 처음 파일이 있는 열과 마지막에 파일이 있는 열을 찾자.

3. 표시된 파일을 사각형의 경계로 하여 사각형을 그려보면 아래와 같다.

파일을 발견할 때마다 드래그의 시작점과 종료점을 업데이트 하지 말고, 파일별로 모든 시작점과 종료점을 모아두고 해당 리스트에서 min, max 를 구한다.
1. "#" 이라는 문자열이 있으면 파일이 있다는 뜻으로, 파일의 위치를 행을 뜻하는 row 배열에 파일의 행을 담고, 열을 뜻하는 col 배열에 파일의 열을 저장한다.
2. 해당 row와 col 배열에서 제일 작은 값이 이 사각형의 시작점이 되고 제일 큰 값이 사각형의 끝나는 점이 된다.
'Coding Test > Python' 카테고리의 다른 글
| [Python] 씨름 선수(그리디) (0) | 2023.06.29 |
|---|---|
| [Python] 회의실 배정(그리디) (0) | 2023.06.28 |
| [프로그래머스] 조건 문자열 (0) | 2023.06.14 |
| [프로그래머스] 더 크게 합치기 (0) | 2023.06.13 |
| [프로그래머스] 문자열 섞기 (0) | 2023.06.12 |