본문 바로가기

분류 전체보기

(171)
[회고] 1월 16일 보호되어 있는 글입니다.
[프로그래머스][Python] 등굣길 문제를 정리해보자. m x n 크기의 격자 모양이 있다. (1, 1)에는 집이 있고, (m, n)에는 학교가 있다. 일부 칸은 물에 잠겨 있다. 물에 잠긴 칸은 지나갈 수 없다. 집에서 학교까지 갈 수 있는 최단 경로의 개수를 구하자. 단, 이동은 오른쪽과 아래쪽만 가능하다. 풀이를 생각해보자. 이동은 무조건 오른쪽과 아래쪽으로만 가능하다. 따라서 어떻게 가도 최단 경로이다. 오른쪽 그림을 보자. 각 좌표까지의 최단 경로를 나타냈다. 마지막 (m-1, n-1)는 위에서 2가지, 왼쪽에서 2가지로 경로가 총 4가지이다. ((0, 0)이 시작이라고 잡았기 때문에 도착은 (m-1, n-1)이다.) 구현해보자. BFS를 이용해서 (0, 0)부터 인접한 좌표로 이동하게 했다. 다만, check리스트를 이용해서 방..
[프로그래머스][Python] 정수 삼각형 문제를 정리해보자. 위와 같은 삼각형이 있다. 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾으면 된다. 이동할 때는 대각선 방향으로 한 칸 왼쪽 또는 오른쪽으로만 이동할 수 있다. 예) 3에서는 8또는 1로만 이동할 수 있다. 풀이를 생각해보자. 거쳐 간 숫자의 합이 가장 크도록 그렸다. 사진을 보면 알 수 있다. 대각선의 값은 현재 수의 누적값 + 다음 수이다. 다음 수를 기준으로 왼쪽 대각선에서 오는 값과 오른쪽 대각선에서 오는 값 중 큰 값이 다음 수의 누적값이 된다. 예) 1은 왼쪽 대각선에서 오는 값이 11, 오른쪽 대각선에서 오는 값이 16이다. 따라서 16을 선택한다. 이것은 1의 누적값이 된다. (구현할 때는 왼쪽 값을 먼저 저장하고, 오른쪽 값이 왔을 때 ..
[Django][장고걸스][ubuntu] Django ORM과 쿼리셋[Querysets] 쿼리셋이란 전달받은 모델의 객체 목록이다. 데이터베이스로부터 데이터를 읽고, 필터를 걸거나 정렬할 수 있다 로컬 콘솔에서 아래 명령어를 입력하면, 장고 interactive console로 들어가게 된다. 장고 명령어 입력이 가능하다. python manage.py shell 모든 객체 조회하기 from blog.models import Post Post.objects.all() 결과는 이렇다. 객체 생성하기 from django.contrib.auth.models import User me = User.objects.get(username='ola') Post.objects.create(author=me, title='Sample title', text='Test') 필터링하기 Post.objects...
[Django][장고걸스][ubuntu] Django HTML 템플릿은 양식, 재사용 가능한 파일이다. 장고에서 템플릿 양식은 HTML을 사용한다. 템플리 위치 blog (StartApp) └───templates 이제 이 폴더 안에 html을 만들면 된다. 템플릿의 동적 데이터 활용 방법 view는 모델과 템플릿을 연결하는 역할이다. blog/views.py from django.shortcuts import render from django.utils import timezone from .models import Post def post_list(request): posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date') return render(reques..
[Django][장고걸스][ubuntu] Django urls mysite/urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('blog.urls')) ] urls.py의 깔끔한 작성을 위해서 include를 이용해 하위 애플리케이션의 urls.py를 가져온다. blog/urls.py from django.urls import path from . import views urlpatterns = [ path('', views.post_list, name='post_list'), ] 하위 어플리케이션의 urls.py이다. 장고는 http://127.0.0.1:80..
[Django] 데이터베이스 초기화 마이그레이션 파일 삭제 migrations 디렉토리 안에 __init__.py를 제외하고 전부 삭제한다. 데이터베이스 삭제 db.sqlite3를 삭제한다. 다른 데이터베이스를 이용했다면 그것을 삭제한다. 데이터베이스 생성 python3 manage.py makemigrations python3 manage.py migrate
[프로그래머스][Python] 단어 변환 문제를 정리해보자. 시작단어, 목표단어, words가 주어진다. 시작단어를 목표단어가 되도록 변환해야 한다. 아래와 같은 규칙으로 단어를 변환할 수 있다. 시작단어가 목표단어가 되기 위해 몇 단계가 필요한가? 프로그래머스에 있는 예를 보자. 시작단어 : "hit" 목표단어 : "cog" words : ["hot","dot","dog","lot","log","cog"] "hit" -> "hot" -> "dot" -> "dog" -> "cog" 이렇게 4단계가 필요하다. 풀이를 생각해보자. 위의 예에서, 자리 별로 바꿀 수 있는 알파벳을 생각해보자. 첫 번째 : h, d, l, c 두 번째 : o 세 번째 : t, g 변환해보자. 지금단어 : hit 첫 번째 변환 : hit, dit, lit, cit, 두 ..
[프로그래머스][Python] 네트워크 문제를 정리해보자. A와 B가 직접적으로 연결되어 있고 B와 C가 직접적으로 연결되어 있다면, A와 C는 간접적으로 연결된 것이다. 따라서 A, B, C 모두 연결되어 있다. 이를 모두 같은 네트워크상에 있다고 한다. 몇 개의 네트워크가 있는지 구하는 문제이다. 제한사항과 입출력 예를 보자. [[1, 1, 0], [1, 1, 0], [0, 0, 1]]은 양방향이다. 표로 나타내면 아래와 같다. 1이면 길이 있고, 0이면 길이 없다. 풀이를 생각해보자. 예를 들어보자. 노드는 12개이다. 네트워크는 3개이다. 시작노드 0번을 연결된 노드를 확인한다. 0번 -> 1번 -> 2번 -> 5번 -> 7번 -> 6번 -> 3번 -> 4번 이렇게 직접적으로 연결된 부분을 확인한다. (DFS) 다음 시작노드는 1번이다..
[프로그래머스][Python] 타겟 넘버 문제를 정리해보자. n개의 음이 아닌 정수가 있다. 이 수들을 적절히 더하거나 빼서 원하는 숫자를 만들려고 한다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들어보자. 위와 같이 5가지 방법이 있다. 주의해야 할 점은 연산순서가 바뀐다고 경우의 수가 늘어나지 않는다. 예를 들어 [1, 2, 3]으로 -6을 만든다고 해보자. -1-2-3, -2-1-3, -3-2-1등 다 같은 경우이다. 풀이를 생각해보자. 예를 들어 [1, 1, 2, 3]을 가지고 있다고 해보자. 1. 시작은 1, 2, 3중 하나로 잡는다. (사진에서는 1로 잡았다. 하나를 잡아야 중복되는 결과가 나오지 않는다.) 2. 누적값에 해당 수로 +와 -연산한다. (누적값이 없다면 0으로 시작) 3. 그 값을 누적시킨다. 4. 잡지 않..