arr = [[0, 1, 2, 3], [4, 5, 6, 7]]
(2행 4열의 2차원 List)N = int(input())
arr = [list(map(int, input().split())) for _ in range(N)]
ㄴ 리스트 컴프리헨션 사용
# i 행의 좌표
# j 열의 좌표
for i in range(n):
for j in range(m):
f(array[i][j]) # 필요한 연산 수행
# i 행의 좌표
# j 열의 좌표
for j in range(m):
for i in range(n):
f(array[i][j]) # 필요한 연산 수행
# i 행의 좌표
# j 열의 좌표
for i in range(n)
for j in range(m)
f(array[i][j + (m - 1 - 2 * j) * (i % 2)])
ㄴ (i % 2)
: i가 홀수일 때만 적용, m - 1 - j - j
: 크기보다 1 작은 값(m - 1) - j(앞의 j값 상쇄) -j
2차 배열의 한 좌표에서 4방향의 인접 배열 요소를 탐색하는 방법
인덱스 (i, j)인 칸의 상하좌우 칸 (ni, nj)
코드로 표현
arr[0...N-1][0...N-1] # NxN 배열
di[] <- [0, 1, 0, -1]
dj[] <- [1, 0, -1, 0]
for i: 0 -> N-1
for j: 0 -> N-1
for k in range(4)
ni <- i + di[k]
nj <- j + dj[k]
if 0 <= ni < N and 0 <= nj < N # 유효한 인덱스면
f(arr[ni][nj])
# i : 행의 좌표, len(arr)
# j : 열의 좌표, len(arr[0])
arr = [[1,2,3],[4,5,6],[7,8,9]] # 3*3 행렬
for i in range(3):
for j in range(3):
if i < j:
arr[i][j], arr[j][i] = arr[j][i], arr[i][j]
&
: 비트 단위로 AND 연산을 한다.
|
: 비트 단위로 OR 연산을 한다.
<<
: 피연산자의 비트 열을 왼쪽으로 이동시킨다.
>>
: 피연산자의 비트 열을 오른쪽으로 이동시킨다.
<<
연산자&
연산자arr = [3,6,7,1,5,4]
n = len(arr) # n: 원소의 개수
for i in range(1<<n): # 1<<n: 부분 집합의 개수
for j in range(n): # 원소의 수만큼 비트를 비교함
if i & (1<<j): # i의 j번 비트가 1인 경우
print(arr[j], end=', ') # j번 원소 출력
print()
print()