Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- join
- 너비 우선 탐색
- SQL
- Lv. 0
- 오블완
- SQL 고득점 KIT
- dfs
- Lv. 1
- group by
- DP
- 프로그래머스
- javascript
- 동적계획법
- 소프티어
- Lv. 2
- C언어
- Dynamic Programming
- 파이썬
- 깊이 우선 탐색
- Python
- softeer
- 티스토리챌린지
- Lv. 3
- LEVEL 2
- level 3
- programmers
- select
- bfs
- Java
- 자바스크립트
Archives
- Today
- Total
몸과 마음이 건전한 SW 개발자
프로그래머스 Lv. 2 행렬 테두리 회전하기 Python 본문
문제 링크
https://school.programmers.co.kr/tryouts/72048/challenges
정답 코드
def solution(rows, columns, queries):
newMap = [[0 for _ in range(columns)] for _ in range(rows)]
cnt = 1
for r in range(rows):
for c in range(columns):
newMap[r][c] = cnt
cnt += 1
answer = []
for x1, y1, x2, y2 in queries:
x1 -= 1
y1 -= 1
x2 -= 1
y2 -= 1
minV = 10001
nextV = newMap[x1][y1]
# 상단
for ny in range(y1+1, y2+1):
if minV > nextV:
minV = nextV
newMap[x1][ny], nextV = nextV, newMap[x1][ny]
# 오른쪽
for nx in range(x1+1, x2+1):
if minV > nextV:
minV = nextV
newMap[nx][y2], nextV = nextV, newMap[nx][y2]
# 하단
for ny in range(y2-1, y1-1, -1):
if minV > nextV:
minV = nextV
newMap[x2][ny], nextV = nextV, newMap[x2][ny]
# 왼쪽
for nx in range(x2-1, x1-1, -1):
if minV > nextV:
minV = nextV
newMap[nx][y1], nextV = nextV, newMap[nx][y1]
answer.append(minV)
return answer
풀이 방법
- 단순하게 상단, 오른쪽, 하단, 왼쪽으로 한 바퀴 돌려준다.
- 돌려주는 과정에서 가장 낮은 점수를 찾는다.
느낀점
- 그다지 어려운 문제는 아니므로 실수하지 않게 print로 확인하면서 풀어보면 좋겠다.
'알고리즘' 카테고리의 다른 글
프로그래머스 Lv. 2 거리두기 확인하기 Python [반례 포함] (0) | 2024.01.03 |
---|---|
프로그래머스 Lv. 2 삼각 달팽이 Python (0) | 2024.01.03 |
프로그래머스 Lv. 2 교점에 별 만들기 Python (0) | 2024.01.03 |
Softeer Level 2 GBC Python (0) | 2024.01.02 |
백준 GOLD 5 [2470번] 두 용액 Python (1) | 2024.01.01 |