본문 바로가기

Algorithm(CodeTree, Python)/Simulation25

[코드트리] 1차원 바람 Python # n, m, q 입력 n, m, q = map(int, input().split()) # building building = [ list(map(int, input().split())) for _ in range(n) ] # winds 입력 winds = [] for _ in range(q): r, d = input().split() r = int(r) winds.append((r, d)) # 함수들 # down_simulate(curr_row, curr_dir) def down_simulate(curr_row, curr_dir): # 왼쪽으로부터의 바람이면 if curr_dir == 'L': # temp temp = building[curr_row][-1] # 옮겨주기 for i in range(m-.. 2023. 1. 15.
[코드트리] 컨베이어 벨트 Python # n, t 입력 n, t = map(int, input().split()) # conbeyor_belt 입력 conbeyor_belt = [ list(map(int, input().split())) for _ in range(2) ] # 함수들 # simulate() def simulate(): # temp_up, temp_down temp_up, temp_down = conbeyor_belt[0][-1], conbeyor_belt[1][-1] # 옮겨주기 for i in range(n-1, 0, -1): # 윗 줄 conbeyor_belt[0][i] = conbeyor_belt[0][i-1] # 아랫 줄 conbeyor_belt[1][i] = conbeyor_belt[1][i-1] # temp_up,.. 2023. 1. 15.
[코드트리] 양수 직사각형의 최대 크기 Python 직사각형 형성의 조건을 생각해보면 간단하게 해결할 수 있다. 대각선을 기준으로 시작점과 끝점을 잡으면 직사각형의 범위를 잡을 수 있다. # n, m 입력 n, m = map(int, input().split()) # grid 입력 grid = [ list(map(int, input().split())) for _ in range(n) ] # 함수들 # is_plus(sx, sy, ex, ey) def is_plus(sx, sy, ex, ey): # (sx, sy) 에서 (ex, ey)까지 탐색 for i in range(sx, ex + 1): for j in range(sy, ey + 1): # 한번이라도 양수가 아니면 if grid[i][j] 끝점 for i in range(x, n): for j in.. 2023. 1. 14.
[코드트리] 금 채굴하기 Python 마름모 구하는데 4시간 걸렸다,, 자만하지말자,, 마름모가 정사각형을 유지하며 커지지 않는다는 것을 왜 3시간동안 몰랐을까,, # n, m 입력 n, m = map(int, input().split()) # grid 입력 grid = [ list(map(int, input().split())) for _ in range(n) ] # 함수들 # get_cost(s) def get_cost(s): return s * s + (s+1) * (s+1) # in_range(x, y) def in_range(x, y): return 0 마름모의 크기 for k in range(2 * n): # income, cost income, cost = get_income(i, j, k), get_cost(k) # incom.. 2023. 1. 13.
[코드트리] 트로미노 Python # n, m 입력 n, m = map(int, input().split()) # grid 입력 grid = [ list(map(int, input().split())) for _ in range(n) ] # 함수들 # in_range_case_1(x, y) def in_range_case_1(x, y): # x는 n-1보다 작고, y는 m-1보다 작으면 통과 return x < n-1 and y < m-1 # get_case_1(x, y) def get_case_1(x, y): # 90도씩 돌린 4 가지 케이스를 전수조사 # sum_1 sum_1 = grid[x][y] + grid[x+1][y] + grid[x+1][y+1] # sum_2 sum_2 = grid[x+1][y] + grid[x+1][y+1.. 2023. 1. 12.
[코드트리] 행복한 수열의 개수 Python # n, m 입력 n, m = map(int, input().split()) # grid grid = [ list(map(int, input().split())) for _ in range(n) ] # 함수들 # is_happy_row(idx) def is_happy_row(idx): # curr_cnt curr_cnt = 1 for i in range(n - 1): # 다음 숫자와 같으면 if grid[idx][i] == grid[idx][i+1]: # curr_cnt 올려주기 curr_cnt += 1 # curr_cnt가 m이 되었으면 if curr_cnt == m: # 성공 return True # 다음 숫자와 다르면 elif grid[idx][i] != grid[idx][i+1]: # curr_c.. 2023. 1. 11.
[코드트리] 최고의 33위치 Python # n 입력 n = int(input()) # grid grid = [ list(map(int, input().split())) for _ in range(n) ] # 함수들 # in_range(x, y) def in_range(x, y): # 격자를 벗어나지 않는 지 반환 return x + 2 < n and y + 2 < n # get_coin(x, y) def get_coin(x, y): # curr_coin curr_coin= 0 # 현 범위 돌면서 for i in range(x, x + 3): for j in range(y, y + 3): # curr_coin 구하기 curr_coin += grid[i][j] # 반환 return curr_coin # 설계 # max_coin max_coin =.. 2023. 1. 11.