[백준_18405] 경쟁적전염 python
와 이문제 생각보다 매우 까다로웠다. bfs내에서 종료조건을 걸어줘야, 시간초과에 걸리지 않고 문제를 해결할 수 있다. # n, k 입력 n, k = map(int, input().split()) # lab lab = [ list(map(int, input().split())) for _ in range(n) ] # s, r, c 입력 s, r, c = map(int, input().split()) # 함수들 # in_range(x, y) def in_range(x, y): return 0
2022. 9. 14.
[백준_1245] 농장관리 python
# n, m 입력 n, m = map(int, input().split()) # farm 입력 farm = [ list(map(int, input().split())) for _ in range(n) ] # 함수들 # is_mount_top(x, y) def is_mount_top(x, y): dxs, dys = [-1, -1, -1, 0, 0, 1, 1, 1], [-1, 0, 1, -1, 1, -1, 0, 1] for dx, dy in zip(dxs, dys): nx, ny = x + dx, y + dy # 주변 위치가 범위 내에 있으면서 현재 위치보다 높으면 실패 if in_range(nx, ny) and farm[x][y] < farm[nx][ny]: return False # 그런 산봉우리가 없으..
2022. 9. 11.
[백준_6593] 상범빌딩 python
3차원배열 받는법좀 까먹지말자,, while True: # l, r, c 입력 l, r, c = map(int, input().split()) # 종료조건 if l == 0 and r == 0 and c == 0: break # building building = [ [[0 for _ in range(c)] for _ in range(r)] for _ in range(l) ] # building 입력받기 for h in range(l): for i in range(r): block = input() for j in range(c): # 시작 위치 저장 if block[j] == 'S': sh, sx, sy = h, i, j # 끝 위치 저장 if block[j] == 'E': eh, ex, ey = h,..
2022. 9. 10.
[백준_2583] 영역 구하기 python
dfs 문제를 풀때마다 느끼는거지만, 파이썬의 최대 리커전가능 횟수 디폴트값이 1000인건, 너무 야박한 것 같다. 꼭지점 좌표로 입력 받을 때, 역으로 이를 생각해야 하기에 조금 불편하겠다 싶었는데, 곰곰히 생각해보니 점대칭으로 그냥 받아도 아무차이없을 것 같아, 그대로 해봤더니 성공했다. # n, m, k 입력 n, m, k = map(int, input().split()) # grid grid = [ [0] * m for _ in range(n) ] # 꼭지점 좌표 입력 for _ in range(k): sy, sx, ey, ex = map(int, input().split()) # 직사각형 그려주기 for i in range(sx, ex): for j in range(sy, ey): grid[i]..
2022. 8. 30.
[백준_1012] 유기농배추 python
어제 과음한 관계로,, 오늘은 쉬운 문제,, # t 입력 t = int(input()) for _ in range(t): # m, n, k 입력 m, n, k = map(int, input().split()) # mount mount = [ [0] * m for _ in range(n) ] # x, y 입력 for i in range(k): x, y = map(int, input().split()) # 배추 심어주기 mount[y][x] = 1 # 함수들 # in_range(x, y) def in_range(x, y): return 0
2022. 8. 25.
[백준_7569] 토마토 python
3차원 배열만 잘 구현할 수 있다면, 어렵지 않게 해결할 수 있는 문제였다. # m, n, h 입력 m, n, h = map(int, input().split()) # storage 설계 storage = [] # 각 층 입력 for _ in range(h): floor = [ list(map(int, input().split())) for _ in range(n) ] storage.append(floor) # 함수들 # in_range(f, x, y) def in_range(f, x, y): return 0
2022. 8. 22.
[백준_2573] 빙산 python
첫째로 실패했던 것은, is_divided()함수에서, 빙산이 있고, 방문한 적 없는 빙산을 체크해야 하는데, 두 번째 조건을 빼 놓고 생각했다는 것, 두 번째로 실패했던 것은, 최대 리커전 횟수를 늘려 주지 않았다는 것. 이외에는 재밌게 푼 문제같다. # 입력 # n, m 입력 n, m = map(int, input().split()) # north_pole 입력 north_pole = [ list(map(int, input().split())) for _ in range(n) ] # 함수들 # is_ocean(x, y) def is_ocean(x, y): return not north_pole[x][y] # check_pow(x, y) def check_pow(x, y): # pow pow = 0 #..
2022. 8. 20.
[백준_1987] 알파벳 python
풀다가 정신병 걸릴뻔했다. 이유도 너무 어이가 없는 것이, 충분히 무시해도 될 만한, 함수리턴과, zip 상 하 좌 우 순서 상관 x dxs, dys = [-1, 1, 0, 0], [0, 0, -1, 1] for i in range(4): # 다음 위치 예측 nx, ny = x + dxs[i], y + dys[i] # 갈 수 있으면 if 0 방문한 알파벳을 기록해 줄 세트 visited_alphabet = set() # 제출용 정답 ans = 0 # 방문한 알파벳 기록해주고 visited_alphabet.add(grid[0][0]) # dfs 돌리기 dfs(0,0,1) # 출력 print(ans) 늘 만들어왔던, chek 함수와 in_range함수를 포기하고 코드를 더럽게 짤 수 밖에 만들었다. 그래도 ..
2022. 8. 19.