[코드트리 파이썬] 강력한 폭발
문제 풀이 def in_range(x, y): return 0
- 알고리즘
- · 2024. 3. 4.
문제 풀이 현재 위치에서 회전하며 격자를 이동해야 하므로 먼저 이동방향에 대해 정의하였다. 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
문제 풀이 두 방향을 동시에 처리하려면 코드가 매우 복잡해질 수 있기 때문에 한 방향을 우선적으로 처리하는 방법을 적용하였다. def shift(row, currDir): if currDir == shiftRight: building[row].insert(1, building[row].pop()) else: building[row].insert(m, building[row].pop(1)) 먼저 배열을 밀어주는 함수이다. 현재 방향에 따라 배열을 미는 역할을한다. def isSameNumber(row1, row2): return any([ building[row1][col] == building[row2][col] for col in range(1, m + 1) ]) 이동하는 방향의 배열과 같은 값이 ..