일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 구현
- 최장공통부분수열
- 냅색 알고리즘
- 배낭 문제
- 정처기 필기
- LCS 알고리즘
- error:0308010C:digital envelope routines::unsupported
- 문자열
- 클래스
- 동적 계획법
- 너비 우선 탐색
- 모듈러 연산 분배법칙
- 그래프 이론
- 최장공통부분문자열
- 다이나믹 프로그래밍
- npm start
- bfs
- db replication
- 파이썬
- 수학
- 나는 바보야...
- dfs
- Container vs VM
- 일단 시도
- Python
- 깊이 우선 탐색
- 그래프탐색
- Docker 원리
- 그래프 탐색
- lazy evaluation
Archives
- Today
- Total
Save my data
프로그래머스 lv1. 바탕화면 정리 (파이썬) 본문
프로그래머스 문제는 정말 오랜만에 푼다.
적응의 문제인지 어떤지 확실하지는 않지만 시간이 좀 걸렸다.
다시 보니 어려운 문제인 것 같지는 않는데 당분간 문제를 많이 풀면서 지켜봐야겠다.
def solution(wallpaper):
x = len(wallpaper)
y = len(wallpaper[0])
lx = x - 1
ly = y - 1
rx = 0
ry = 0
for i in range(x):
if "#" in wallpaper[i]:
lx = min(lx, i)
rx = max(rx, i + 1)
for i in range(x):
for j in range(y):
if wallpaper[i][j] == '#':
ly = min(ly, j)
ry = max(ry, j + 1)
answer = [lx, ly, rx, ry]
return answer
프로그래머스의 좋은 점은 다른 사람의 풀이중 많은 사람들이 추천한 코드를 볼 수 있다는 점이다.
인상깊었던 풀이를 가져왔다.
# 다른 사람 풀이
'''
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]
'''
'''
def solution(wallpaper):
x = []
y = []
for i, row in enumerate(wallpaper):
for j, col in enumerate(row):
if col == '#':
x.append(i)
y.append(j)
return [min(x), min(y), max(x)+1, max(y)+1]
'''
체감상 프로그래머스 문제들은 백준 문제들에 비해 문제 해결에 필요한 정보가 덜 주어지는 것 같고 풀 때도 조건의 디테일에 신경을 많이 써야 되는 것 같다.
위 문제의 경우는 백준같았으면 잘 쳐줘야 실버 하위 문제인 것 같은데 푸는데 살짝 오래 걸렸다...
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 lv2. 석유 시추 (0) | 2024.04.24 |
---|
Comments