1. 마름모 범위 체크
(↓마름모의 크기가 1일때)
1 | ||
1 | 1 | 1 |
1 |
위 격자에서 1이 있는 부분만을 마름모라고 표현한다면, (정사각형이고 한 변의 크기를 n이라고 하자)
(0,0) ~ (n-1,n-1) 즉, 좌측 위부터 우측 아래까지 모든 영역에서 (a,b)가 마름모의 범위에 속하는지 구하는 방법!
중앙의 인덱스 값을 (cx, cy)라고 한다면 아래 범위 내부에 속해야 한다.
|a-cx| + |b-cy| <= m (마름모의크기)
ex )
1 | ? | |
1 | 1 | 1 |
1 |
마름모 중앙의 인덱스는 (1, 1)이다. (0,2)가 범위 내에 있는지 체크해보자
|1-0| + |1-2| = 2이므로 범위 내에 없다
2. 다차원배열 -> 1차원배열
tmp = [[1,2],[3,4]]
result = sum(tmp, [])
# tmp 내부의 리스트와 빈 리스트를 합친다는 의미로, 결국에 tmp 내부 리스트 값만 추출돼서 1차원배열로 저장됨
3. 격자에서 쓰면 좋은 스킬
(1) dx, dy 테크닉
(2) 빈 board를 만들어서 방문 체크
4. 사각형 시계방향으로 밀면서 회전
배열을 쉬프트해야 하는데, 행과 열이 증가하는 방향으로 쉬프트 되면 역순 for문으로 코딩하기
temp 한 번만 백업하는 방법!
# 직사각형 경계 숫자들 시계방향으로 회전
# 네 변 쉬프트 할 때마다 tmp 저장이 아닌, 한 번만 tmp 저장!
def rotate(start_row, start_col, end_row, end_col):
temp = a[start_row][start_col]
# 왼면
for row in range(start_row, end_row):
a[row][start_col] = a[row+1][start_col]
# 아랫면
for col in range(start_col, end_col):
a[end_row][col] = a[end_row][col+1]
# 오른면
for row in rangee(end_col, start_col, -1)):
a[start_row][col] = a[start_row][col-1]
a[start_row][start_col+1] = temp
5. 파이썬 프로그램 종료 방법
# 프로그램 정상 종료
sys.exit(0)
# 프로그램 비정상 종료
sys.exit(1)
6. 리스트내에 반복되는 수열이 존재하는지, 그리고 바로 붙어서 존재하는지 체크
def is_possible_series():
length = 1
while True:
# start2:end2 | start1:end1
start1, end1 = len(series) - length, len(series) - 1
start2, end2 = start1 - length, start1 - 1
if start2 < 0:
break
# length만큼의 연속된 부분수열이 있는지 체크
if series[start1:end1 + 1] == series[start2:end2 + 1]:
return False
length += 1
return True
7. 문자열 받을 때 개행문자(줄바꿈 '\n') 처리 방법
readline 함수에서 strip() 처리 해주면 개행문자 제외되고 입력받을 수 있다
import sys
grid =[
list(sys.stdin.readline().strip())
for _ in range(n)
]
8. 격자 N X M 크기 헷갈릴 때
행 x 열 임을 기억하자.
통상 n은 행이고, m은 열로 표현
9. recursion 깊이 제한 해제
sys.setrecursionlimit(2500) # 2500 아닌 다른 수도 가능
'자기개발👨💻 > 코딩 알고리즘' 카테고리의 다른 글
[Python] 스킬트리 - 프로그래머스 Lv2 (1) | 2023.12.11 |
---|---|
[Python] 안전지대 - dfs, bfs로 풀기 (0) | 2023.12.08 |
[Python] 우리는 하나 - bfs, 순열, 조합 (작성중) (0) | 2023.12.08 |
DFS, BFS (0) | 2023.12.06 |
[C++] 순열부터 조합까지 직접 구현해보기 (작성중) (0) | 2023.12.05 |
Python 언어로 조합 구현! (combi함수안쓰고!) (2) | 2023.12.03 |