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 |
Tags
- Brightics를 이용한 분석
- 브라이틱스 서포터즈
- Brightics
- 삼성 SDS
- 직원 이직률
- 브라이틱스
- Brightics Studio
- Brigthics
- 삼성 SDS Brigthics
- 포스코 아카데미
- Brigthics를 이용한 분석
- 데이터분석
- 혼공학습단
- 팀 분석
- 추천시스템
- 포스코 청년
- 데이터 분석
- 삼성SDS Brightics
- 캐글
- 혼공머신
- Brigthics Studio
- 모델링
- 개인 의료비 예측
- 직원 이직여부
- 노코드AI
- 삼성SDS Brigthics
- 혼공
- 삼성SDS
- 영상제작기
- 혼공머신러닝딥러닝
Archives
- Today
- Total
데이터사이언스 기록기📚
[프로그래머스/Python] Level 2_행렬 테두리 회전하기 (2021 Dev-Match:웹 백엔드 개발자(상반기)) 본문
Coding Test/프로그래머스(Python)
[프로그래머스/Python] Level 2_행렬 테두리 회전하기 (2021 Dev-Match:웹 백엔드 개발자(상반기))
syunze 2023. 9. 26. 14:15📌문제 유형
2021 Dev-Match:웹 백엔드 개발자(상반기) (완전탐색)
📌문제
📌나의 문제풀이
- 인덱스랑 움직이는거 헷갈릴 수 있어서 그림 필수
- 첫번째 가로는 왼쪽 위 제외하고 회전, 두번째 세로는 x1 다음 줄부터 x2 직전 줄까지 회전, 두번째 가로는 y2~y1 직전, 첫번째 세로는 x2~x1직후까지
- 주의 : 마지막 숫자 넣을 때, 가장 작은 값인지 확인하기(이거 안넣어서 틀렸음)
def solution(rows, columns, queries):
answer = []
# 행렬 만들기
maps = [[0 for _ in range(columns)] for _ in range(rows)]
for i in range(rows):
for j in range(columns):
maps[i][j] = i * columns + (j+1)
for x1,y1,x2,y2 in queries:
min_ = rows * columns
# (x1,y1,x2,y2) -> x1-1, y1-1로 접근하기
# 첫째줄 가로 변경
before_num = maps[x1-1][y1-1]
for k in range(y1, y2):
if before_num < min_:
min_ = before_num
next_num = maps[x1-1][k]
maps[x1-1][k] = before_num
before_num = next_num
# 둘째줄 세로 변경
for n in range(x1,x2-1):
if before_num < min_:
min_ = before_num
next_num = maps[n][y2-1]
maps[n][y2-1] = before_num
before_num = next_num
# 둘째줄 가로 변경
for m in range(y2-1,y1-1,-1):
if before_num < min_:
min_ = before_num
next_num = maps[x2-1][m]
maps[x2-1][m] = before_num
before_num = next_num
# 첫째줄 세로 변경
for l in range(x2-1, x1-1,-1):
if before_num < min_:
min_ = before_num
next_num = maps[l][y1-1]
maps[l][y1-1] = before_num
before_num = next_num
if before_num < min_:
min_ = before_num
maps[x1-1][y1-1] = before_num
answer.append(min_)
return answer
📌다른 사람의 문제풀이
- Stack(마지막에 넣은 것 먼저 뽑는 것) 이용해서 2개 전 값 빼기
def solution(rows, columns, queries):
answer = []
board = [[i+(j)*columns for i in range(1,columns+1)] for j in range(rows)]
# print(board)
for a,b,c,d in queries:
stack = []
r1, c1, r2, c2 = a-1, b-1, c-1, d-1
for i in range(c1, c2+1):
stack.append(board[r1][i])
if len(stack) == 1:
continue
else:
board[r1][i] = stack[-2]
for j in range(r1+1, r2+1):
stack.append(board[j][i])
board[j][i] = stack[-2]
for k in range(c2-1, c1-1, -1):
stack.append(board[j][k])
board[j][k] = stack[-2]
for l in range(r2-1, r1-1, -1):
stack.append(board[l][k])
board[l][k] = stack[-2]
answer.append(min(stack))
return answer
📌리뷰
- 마지막 값도 최소값에 포함되었는지 확인하기
- 다른 사람들이 자주 하는 실수
- 초기배열 잘못 생성
728x90
'Coding Test > 프로그래머스(Python)' 카테고리의 다른 글
[프로그래머스/Python] Level 2_[3차] 압축 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.10.11 |
---|---|
[프로그래머스/Python] Level 2_멀쩡한 사각형 (Summer/Winter Coding(2019)) (0) | 2023.10.10 |
[프로그래머스/Python] Level 2_배달 (Summer/Winter Coding(~2018)) (0) | 2023.09.25 |
[프로그래머스/Python] Level 2_수식 최대화 (2020 카카오 인턴십) (0) | 2023.09.06 |
[프로그래머스/Python] Level 2_[3차]방금그곡 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.08.14 |
Comments