전체보기 333

[이코테]최단 경로 구현 코드

다익스트라 알고리즘 한 지점에서 다른 특정 지점까지의 최단 경로를 구해야 하는 경우에 사용할 수 있는 최단 경로 알고리즘 그리디 알고리즘: 매 상황에서 방문하지 않은 가장 비용이 적은 노드를 선택해 임의의 과정을 반복 단계를 거치며 한 번 처리된 노드의 최단 거리는 고정되어 더 이상 바뀌지 않음 한 단계당 하나의 노드에 대한 최단 거리를 확실히 찾는 것으로 이해할 수 있음 간단한 다익스트라 알고리즘 소스코드 import sys input = sys.stdin.readline INF = int(1e9) n, m = map(int, input().split()) start = int(input()) # 각 노드에 연결되어 있는 노드에 대한 정보를 담는 리스트를 만들기 graph = [[] for i in r..

Coding/이코테 2023.07.13

[이코테]다이나믹 프로그래밍 문제 풀이(1로 만들기, 개미 전사, 바닥 공사, 효율적인 화폐 구성)

1로 만들기 정수 X가 주어질 때 정수 X에 사용할 수 있는 연산은 다음과 같이 4가지이다. X가 5로 나누어 떨어지면, 5로 나눈다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. X에서 1을 뺀다. 정수 X가 주어졌을 때, 연산 4개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 답안 예시 x = int(input()) d = [0]*30001 for i in range(2, x+1): #현재의 수에서 1을 빼는 경우 d[i] = d[i-1]+1 #현재의 수가 2로 나누어 떨어지는 경우 if i%2 == 0: d[i] = min(d[i], d[i//2]+1) #현재의 수가 3으로 나누어 떨어지는 경우 if i%3 == 0..

Coding/이코테 2023.07.11

[이코테]이진 탐색 문제 풀이(부품 찾기, 떡볶이 떡 만들기)

부품 찾기 동빈이네 전자 매장에는 부품이 N개 있다. 각 부품은 정수 형태의 고유한 번호가 있다. 어느 날 손님이 M개 종류의 부품을 대량으로 구매하겠다며 당일 날 견적서를 요청했다. 동빈이는 때를 놓치지 않고 손님이 문의한 부품 M개 종류를 모두 확인해서 견적서를 작성해야 한다. 이때 가게 안에 부품이 모두 있는지 확인하는 프로그램을 작성해보자. 내 답안(정답) n = int(input()) list_n = list(map(int, input().split(' '))) m = int(input()) list_m = list(map(int, input().split(' '))) for i in list_m: if i in list_n: print("yes", end=' ') else: print("no"..

Coding/이코테 2023.07.07

[이코테]정렬 문제 풀이(성적이 낮은 순서로 학생 출력하기, 두 배열의 원소 교체)

성적이 낮은 순서로 학생 출력하기 N명의 학생 정보가 있다. 학생 정보는 학생의 이름과 학생의 성적으로 구분된다. 각 학생의 이름과 성적 정보가 주어졌을 때 성적이 낮은 순서대로 학생의 이름을 출력하는 프로그램을 작성하시오. n = int(input()) array = [] for _ in range(n): name, score = input().split() array.append((name, int(score))) array = sorted(array, key=lambda student: student[1]) for student in array: print(student[0], end = ' ') 람다를 사용하여 리스트를 정렬할 수 있다. 사실 난 처음에 딕셔너리로 풀었으나 리스트 답안이 더 깔끔하..

Coding/이코테 2023.07.06

[Web]Django 쿼리셋(QuerySet)

쿼리셋 QuerySet 전달받은 모델의 객체 목록 데이터베이스로부터 데이터를 읽고, 필터를 걸거나 정렬을 할 수 있다. Post 모델을 models.py파일에 post_list 모델은 views.py 파일에 HTML 템플릿에서 글 목록을 어떻게 보여줄까? post_list를 뷰에서 보여주고 이를 템플릿에 전달하기 위해서는 모델을 가져와야 함 뷰가 템플릿에서 모델을 선택하도록 만들어야 함 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..

Study/Web 2023.07.04

[Web]Django urls.py 구성

URLConf URL Configuration 장고에서 URL과 일치하는 뷰를 찾기 위한 패턴들의 집합 http://127.0.0.1:8000/ 주소를 블로그 홈 페이지로 지정하고 blog 애플리케이션에서 메인 mysite\urls.py 파일로 url들을 가져오자 blog.urls를 가져오기 위해 include 함수를 사용 mysite\urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('blog.urls')), ] include를 적용하기 전에는 URL을 요청하면 프로젝트(mysite)의 urls...

Study/Web 2023.07.04

[Web]Django 애플리케이션 생성 및 관리자 설정

애플리케이션 생성 python manage.py startapp blog blog라는 애플리케이션 생성 mysite\settings.py에 'blog'를 추가하여 해당 애플리케이션에 대한 내용을 등록 블로그 글 model 생성 from django.conf import settings from django.db import models from django.utils import timezone class Post(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) title = models.CharField(max_length=200) text = models.TextField() cre..

Study/Web 2023.07.03

[Web]Django 가상환경 구성 및 설치

가상환경 mkdir djangogirls cd djangogirls python -m venv myvenv myvenv\Scripts\activate 장고설치 python -m pip install --upgrade pip pip3 install django~=2.0.0 python3 -m pip install django 위 명령을 통해서도 설치 가능 장고를 설치하고 나면 django-admin 명령을 사용할 수 있으며 startproject를 통해 프로젝트를 실행할 수 있다. django-admin startproject mysite . mysite라는 프로젝트를 시작하며 .(현재 디렉토리)에서 생성 manage.py - 스크립트, 사이트 관리를 도와주는 역할 settings.py - 웹사이트 설정이..

Study/Web 2023.07.02

[Web]Django MTV 패턴

Django MVC(Model - View - Controller)를 기반으로 한 프레임워크 MVC가 아닌 MTV를 사용 MVC Model - View - Controller 각가의 구성 요소가 서로 다른 요소들에게 영향을 미치지 않아야 한다 Model 데이터를 가지고 있으며, 데이터를 처리하는 로직 View 화면에 요청에 대한 결과물을 보여주는 역할 유저와 어플리케이션 간의 인터페이스 Controller 모델과 뷰를 이어주는 역할 요청에 따라 모델에게 적절한 로직을 가동하도록 알려주고 모델이 응답하면 그 응답을 뷰에 전달하는 역할 MTV Model - Template - View Model 데이터베이스에 저장되는 데이터 하나의 클래스가 하나의 DB Table ORM(Object Relational Ma..

Study/Web 2023.07.02

[이코테]정렬 코드 정리

선택 정렬 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)): min_index = i for j in range(i+1, len(array)): if array[min_index] > array[j]: min_index = j array[i], array[min_index] = array[min_index], array[i] print(array) 배열 인덱스 첫번째부터 i로 지정 그 이후 배열에서 최소값을 찾아 해당 인덱스를 j로 지정한 뒤 스와프(swap)를 통해 자리를 바꿔준다. 즉, 배열의 최소값을 맨 앞으로 이동 이를 반복하여 맨 앞에서부터 차례대로 하나씩 지정 삽입 정렬 array = [7, 5, 9, 0, 3, 1, 6, ..

Coding/이코테 2023.06.28