이차원 배열
[백준 파이썬] #1018 체스판 다시 칠하기
풀기 전 생각해보기😮 이차원 배열의 탐색 풀이🛫 N, M = map(int, input().split()) # N개의 행, M개의 열 arr = [list(input()) for _ in range(N)] white = [[0] * 8 for _ in range(8)] black = [[0] * 8 for _ in range(8)] for col in range(8): for row in range(8): if (col+row)%2 == 0: white[col][row] = 'W' black[col][row] = 'B' else: white[col][row] = 'B' black[col][row] = 'W' li = [] for col in range(N-8+1): for row in range(M-8+..
[SWEA] #10989. 폭격 작전_파이썬
풀기 전 생각해보기😮 IM 시험 대비 델타 값 이용해서 방향 탐색 visited 활용해서 계산 중복 방지하기 풀이🛫 # U, R, D, L dcol = [-1, 0, 1, 0] drow = [0, 1, 0, -1] T = int(input()) for t in range(T): N, M = map(int, input().split()) arr = [list(map(int, input().split())) for _ in range(N)] visited = [[0] * N for _ in range(N)] kills = 0 for m in range(M): C, R, P = map(int, input().split()) # 폭탄이 떨어진 곳의 피해값 if visited[C][R] == 0: kills +=..
[백준 파이썬] #4396 지뢰 찾기
풀기 전 생각해보기😮 지뢰가 있을 경우 모든 지뢰의 위치 표시 이차원 배열의 방향 탐색 풀이🛫 N = int(input()) mine = [list(input()) for i in range(N)]# 지뢰의 위치 open = [list(input()) for i in range(N)]# 지뢰가 있는지 확인한 위치 zone = [[0 for i in range(N)] for j in range(N)]# 플레이어가 보는 위치 # U UR R DR D DL L UL dcol = [1, 1, 0, -1, -1, -1, 0, 1] drow = [0, 1, 1, 1, 0, -1, -1, -1] for col in range(N): for row in range(N): # 지뢰가 있는 곳 주위의 값 표시 if min..
[SWEA] #1211. Ladder2_파이썬
풀기 전 생각해보기😮 2022.08.11 - [SSAFY/SWEA] - [SWEA] #1210. Ladder1_파이썬과 유사한 문제 이동 가능한 범위에 대해 조건 주의해서 설정하기 좌, 우 방향으로만 이동하는 양을 비교해도? 풀이🛫 T = 10 for t in range(T): testcase = int(input()) arr = [list(map(int, input().split())) for i in range(100)] # 출발 가능한 인덱스를 구함 startList = [] for i in range(100): if arr[0][i] == 1: startList.append(i) def cntRoute(startRow): col, row = 0, startRow cntSide = 0 while c..
[SWEA] #1210. Ladder1_파이썬
풀기 전 생각해보기😮 시작점에서 출발하는게 편할까? 도착점에서 출발하는게 편할까? 특정 조건을 만족할 때까지 전진시키는 방법 풀이🛫 T = 10 for t in range(T): case = int(input()) arr = [list(map(int, input().split())) for i in range(100)] # 도착지점의 인덱스 찾기 col, row = 0, 0 for end in range(100): if arr[99][end] == 2: col = 99 row = end break # 출발점에 도착할 때까지 진행 while col != 0: # col == 0: 시작점 # 왼쪽에 길이 있을 때 if row-1 >= 0 and arr[col][row-1] == 1: while row-1 >..
[SWEA] 1954. 달팽이 숫자_파이썬
풀기 전 생각해보기😮 이차원 배열 상에서 인덱스 조건 주의하기 방향을 어떻게 설정해 줄 것인지 풀이🛫 T = int(input()) for t in range(T): N = int(input()) arr = [[0] * N for i in range(N)] col, row = 0, 0 v = 0 arr[col][row] = 1 dcol = [-1, 0, 1, 0] drow = [0, 1, 0, -1] for i in range(1, N**2+1): arr[col][row] = i col = col+dcol[v] row = row+drow[v] if col < 0 or row < 0 or N
[SWEA] #11014. 농작물 수확_파이썬
문제 💎 11014. 03_배열2_농작물 수확 * 문항 설명에 오류가 있다. 비용에 관해서 생각하지 말고, 밭을 나눠가졌을 때 가장 공평하게 가질 수 있는 값에 대해서만 생각하도록 한다. 입력으로 N X N 크기의 농장에 대한 정보가 2차 배열 형태의 값들이 주어진다. 주어진 값들은 각 셀에서 얻을 수 있는 농작물의 양이다. 수민, 기라, 현석 3형제는 농장을 3분할 해서 농작물을 나눠 가질 계획이다. 욕심많은 수민이 때문에 형제간 불화가 생기지 않도록 최대한 공평하게 나누어야 한다. 농장을 3분할 하는 방법은 가로선과 세로선을 그어서, 다음 그림과 같이 3개의 영역으로 나누는 것이다. 사각영역의 가로와 세로의 크기는 최소 1이상이어야 한다. 3 분할 했을 때 세 영역에서 얻을 수 있는 농작물 총합의 최..
[SWEA] 10593. 가로세로 합_파이썬
풀기 전 생각해보기😮 가로열과 세로열의 합 탐색하기 중복되는 값 제거 풀이🛫 # 가로세로 합 T = int(input()) for t in range(T): N = int(input()) arr = [list(map(int, input().split())) for t in range(N)] answer = 0 row_list, col_list = [], [] # 가로열(행)의 합 리스트 구하기 for col in range(N): row_sum = 0 for row in range(N): row_sum += arr[col][row] row_list.append(row_sum) # 세로열(열)의 합 리스트 구하기 for row in range(N): col_sum = 0 for col in range(N)..
[SWEA] #1974. 스도쿠 검증_파이썬
풀기 전 생각해보기😮 이차원 배열 : 가로 탐색, 세로 탐색, 3x3 탐색 가로 탐색과 세로 탐색을 진행했을 때 이상이 없을 때, 모든 3x3 탐색(9번)을 진행해야 할까? 풀이🛫 T = int(input()) for _ in range(T): sdoku = [list(map(int, input().split())) for i in range(9)] li = [] check = 1 # 가로 탐색 for i in range(9): d = {} for j in range(9): if sdoku[i][j] not in d: d[sdoku[i][j]] = 1 else: d[sdoku[i][j]] += 1 for i in d: if d[i] > 1: check = 0 # 세로 탐색 for i in range(9)..
[SWEA] #1979. 어디에 단어가 들어갈 수 있을까_파이썬
풀기 전 생각해보기😮 이차원 배열 : 가로 방향, 세로 방향 탐색 퍼즐 공간이 세 글자일 때 vs 네 글자일 때 : ex) 0 0 0 1 1 vs 0 0 0 0 1 구분 퍼즐 내의 공간일 때 vs 퍼즐 경계가 포함된 공간일 때 : ex) 0 1 1 1 0 vs 0 0 1 1 1 구분 풀이🛫 T = int(input()) for _ in range(T): # N: 정사각형 퍼즐의 크기, K: 특정 단어 길이 N, K = map(int, input().split()) puzzle = [list(map(int, input().split())) for i in range(N)] fnd = 0 # 가로 기준 탐색 for i in range(N): l = 0 for j in range(N): if puzzle[i]..