연습장

22. 바탕화면 정리 본문

프로그래머스/1단계

22. 바탕화면 정리

js0616 2024. 1. 20. 19:55

이 문제를 보고 언어능력이 부족해지는 느낌이 들었다.

 

 

 

그림으로 보면 이렇게 쉽게 이해가 되는데.. 

 

 

 

. 은 빈곳 # 은 지워야할 문서의 위치이다. 

 


 

간단하게 생각하면 좌표 문제로 # 이 있는 좌표중 가장 작은곳과 가장 큰곳을 찾으면 될거같다. 

 

1. 리스트에서 # 이 가장 먼저 나오는 원소의 위치

2. 각 원소 (. 과 # 중에서 ) 에서  # 이 가장 먼저 나오는 원소의 위치

3. 리스트에서 # 이 가장 마지막에 나오는 원소의 위치

4. 각 원소 (. 과 # 중에서 ) 에서  # 이 가장 마지막에 나오는 원소의 위치

 

1번을 예로 들면

 

[".#...", "..#..", "...#."] 

 

리스트의 원소에서 # 은 0 1 2 에서 나오고

원소 내에서  #의 위치가 각각 1 2 3 에서 나온다. 

 

(0,1) , (2+1,3+1) 의 영역을 드래그하면 모두 포함된다.

0,1,3,4

 

 

 

def solution(wallpaper):
    answer = []
    row = []
    col = []
    for i in range(len(wallpaper)):
        if '#' in wallpaper[i]:
            row.append(i)
            col = col + [j for j, value in enumerate(wallpaper[i]) if value == '#']
            
    print(row)
    print(col)

    return answer

 

 

 

이후 각각 row 와 col 의 최소 최대를 찾으면 된다. 

 

 

def solution(wallpaper):
    answer = []
    row = []
    col = []
    for i in range(len(wallpaper)):
        if '#' in wallpaper[i]:
            row.append(i)
            col = col + [j for j, value in enumerate(wallpaper[i]) if value == '#']
            
    row.sort()
    col.sort()
    
    answer.append(row[0])
    answer.append(col[0])
    answer.append(row[-1]+1)
    answer.append(col[-1]+1)
                   
                   
    
    return answer

'프로그래머스 > 1단계' 카테고리의 다른 글

24. 달리기 경주  (0) 2024.01.22
23. 개인정보 수집 유효기간  (1) 2024.01.22
21. 데이터 분석  (0) 2024.01.20
20. 성격 유형 검사하기  (0) 2024.01.20
19. 신규 아이디 추천  (0) 2024.01.19