목록전체 글 (165)
현제의 현재이야기
나이트(BFS) | 문제 나이트는 다음과 같이 노란색 위치를 기준으로 검은색 8곳으로 움직임이 가능합니다. n * n 격자 위에서 격자를 벗어나지 않고 나이트가 시작점에서 도착점까지 가는 데 걸리는 최소 이동 횟수를 구하는 프로그램을 작성해보세요. from collections import deque n = int(input()) lst = list(map(int, input().split())) (r1, r2) = (lst[0] - 1, lst[1] - 1) (r3, r4) = (lst[2] - 1, lst[3] - 1) visited = [ [0 for _ in range(n)] for _ in range(n) ] result = [ [0 for _ in range(n)] for _ in range(..
DFS, BFS에 대한 고찰 드디어 깨우쳐 버린 그래프 탐색. 재귀 함수에 대한 것을 이해하고 보니 dfs가 쉬워졌다. 리스트로 푸는 문제는 전에 이해가 가능했었는데 그래프에서는 어려움을 겪었었다. 근데 알아버림 두, 네 방향 탈출 가능 여부 판별 DFS와 BFS차이 | 문제 n * m 크기의 이차원 영역의 좌측 상단에서 출발하여 우측 하단까지 뱀에게 물리지 않고 탈출하려고 합니다. 이동을 할 때에는 반드시 상, 우에 인접한 칸으로만 이동할 수 있으며, 뱀이 있는 칸으로는 이동을 할 수 없습니다. 예를 들어 과 같이 뱀이 배치 되어 있는 경우 실선과 같은 경로로 탈출을 할 수 있습니다. 이 때 뱀에게 물리지 않고 탈출 가능한 경로가 있는지 여부를 판별하는 코드를 작성해보세요. DFS(두방향) n , m ..
| 문제 1이상 100이하의 숫자로만 이루어져 있는 n * n 크기의 격자 정보가 주어집니다. 이때 행복한 수열이라는 것은 다음과 같이 정의됩니다. 행복한 수열 = 연속하여 m개 이상의 동일한 원소가 나오는 순간이 존재하는 수열 n * n 크기의 격자 정보가 주어졌을 때 각 행마다 봤을 때 나오는 n개의 수열과, 각 열마다 봤을 때 나올 수 있는 n개의 수열을 포함하여 총 2n개의 수열 중 행복한 수열의 개수를 세서 출력하는 프로그램을 작성해보세요. 예를 들어, 다음과 같은 경우라면, 첫 번째 행을 골랐을 경우와 첫 번째 열을 골랐을 경우에만 행복한 수열이 되므로, 총 행복한 수열의 수는 2개가 됩니다. 첫번째 풀이 n, m = map(int, input().split()) lst = [ list(map..
models.py from django.db import models from accounts.models import User class Sentence(models.Model): sentence = models.CharField(max_length=200) discription = models.CharField(max_length=200) created_at = models.DateTimeField(auto_now_add=True, null=True) class Post(models.Model): body = models.CharField(max_length=200) user = models.ForeignKey(User, on_delete=models.CASCADE, null=True) sentenc..
| 문제 0과 1로만 채워져 있는 n * n 크기의 격자판 정보가 주어집니다. 0은 빈 칸을, 1은 해당 칸에 블럭이 채워져 있음을 뜻합니다. 이때 1 * m 크기의 블럭이 격자판 위에서 떨어집니다. 이 블럭은 k번째 열 부터 k + m - 1번째 열까지의 공간을 차지하며, 가장 위에서부터 밑으로 떨어집니다. 만약 이 블럭이 떨어지는 도중 단 한곳에라도 이미 격자판 위에 놓여있던 블럭과 맞닿게 된다거나, 혹은 바닥에 닿게 된다면 떨어지는 것을 멈추게 됩니다. 내 풀이 arr = list(map(int, input().split())) n = arr[0] m = arr[1] k = arr[2] grid = [ list(map(int, input().split())) for _ in range(n) ] sa..
완전탐색 시간을 계산해보고 완전탐색을 사용할 수 있으면 사용해라! | 문제 N * N 크기의 격자 정보가 주어집니다. 이때 해당 위치에 동전이 있다면 1, 없다면 0이 주어집니다. N * N 격자를 벗어나지 않도록 3 * 3 크기의 격자를 적절하게 잘 잡아서 해당 범위 안에 들어있는 동전의 개수를 최대로 하는 프로그램을 작성해보세요. # 내 답 n = int(input()) grid = [ list(map(int, input().split())) for _ in range(n) ] money = 0 def get(i, j): get_money = 0 for i_ in range(i, i+3): for j_ in range(j, j+3): get_money += grid[i_][j_] return get_..