[코드트리 파이썬] 강력한 폭발
문제 풀이 def in_range(x, y): return 0
- 알고리즘
- · 2024. 3. 4.
문제 풀이 그래프를 탐색하는 문제이므로 BFS를 사용하였다. n, k, u, d = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(n)] visited = [[False] * n for _ in range(n)] sumList = [] 먼저 필요한 정보들을 입력받고 필요한 변수들을 선언하였다. 방문 여부를 체크해야하므로 visited배열을 사용하였다. def BFS(i, j): q = deque() q.append((i, j)) _sum = 1 visited[i][j] = True while q: r, c = q.popleft() now = graph[r][c] for i in range(4): nr, n..
문제 풀이 현재 위치에서 회전하며 격자를 이동해야 하므로 먼저 이동방향에 대해 정의하였다. x = N // 2 y = N // 2 res = matrix[y][x] dx = [1, 0, -1, 0] dy = [0, 1, 0, -1] direction = ["E", "S", "W", "N"] nDirection = 3 시작위치는 격자의 정중앙이므로 x, y의 좌표는 격자의 크기 // 2 로 구하였다. direction배열은 실제로 쓰이진않지만 숫자로 표현된 현재 방향에 대해 헷갈리지 않기 위해 만들었다. 0 -> E, 1 -> S, 2 -> W, 3 -> N로 정의한다. 시작방향은 N이기 때문에 3으로 초기화시켜주었다. for i in moving: if i == "R": nDirection += 1 el..
문제 풀이 격자 내부를 모두 탐색하는 방법을 사용하였다. def canCal(x, y, r, c): if 0
문제 풀이 회의의 추가시간과 종료시간이 주어졌을 때 몇개의 회의를 제거해야 가장 많은 회의를 할 수 있는지 구하는 문제이다. 결론부터 말하자면 가장 빠르게 끝나는 회의순으로 배치하면 해결이 가능하다. 가령 회의시간이 위의 표처럼 구성되어 있을 때 빨리 끝나면서 겹치지 않는 회의를 고르면 a, (c,d), f, g 가 된다. c와 d회의는 하나만 선택하면 된다. for i in range(n): a, b = map(int, input().split()) room.append([a, b]) room.sort(key = lambda x : [x[1], x[0]]) 회의실을 입력받고 정렬하는 코드이다. 회의실의 경우 끝나는 시간을 기준으로 정렬해야하므로 람다식을 이용하여 끝나는 시간을 기준으로 정렬한 뒤 만약..
문제 풀이 def in_range(x, y): return 0