본문 바로가기

분류 전체보기

(44)
1669 멍멍이 쓰다듬기 문제에서 중요한 것은 키의 차이이다. 그에 따라 규칙을 찾다보면 N^2의 경우에1, 2, 3, ... , N - 1, N , N - 1, ... , 3, 2, 1 와 같이 발견할 수 있다. 그리고 아래와 같이 몇 개만 해보면 키 차이를 D라고 할 때 다음과 같이 케이스를 세 개로 나눌 수 있다. 1. D = N ^ 22. D
Python Flask[플라스크] 시작하기 - 1 Anaconda를 설치하였다면, Anaconda Python3는 기본적으로 Flask 라이브러리를 제공합니다. 이를 이용하여 이번 포스팅에는 기본적인 웹 서버 기능을 구현하고자 합니다. (Anaconda 다운로드, Pycharm 다운로드) 파이참을 이용해 New Project를 선택하면 다음과 같은 화면이 보입니다. 왼편의 Flask를 선택한 후, 오른편에서 적절한 프로젝트 위치와 인터프리터 경로를 설정합니다. 생성하게 되면 프로젝트의 구조는 굉장히 간단히 구성되어 있을 것이며, app.py는 다음과 같이 작성되어 있습니다. 12345678910from flask import Flask app = Flask(__name__) @app.route('/')def hello_world(): return 'He..
Python Django[장고] 시작하기 - 2 지난 포스팅에서 Pycharm과 Anaconda Python을 이용하여 기본적인 장고 프로젝트 생성에 대하여 알아보았습니다. 이번 포스팅에는 프로젝트 내에서 장고 어플리케이션 생성에 대해 알아보도록 하겠습니다. 프로젝트 내에서 가장 쉽게 어플리케이션을 생성하는 방법은 아래의 명령어를 터미널에서 수행하면 됩니다 ! $ python manage.py startapp MyApplication 참고로 공식 도큐먼트에서는 다음과 같은 설명이 있습니다. Django는 앱의 기본 디렉토리 구조를 생성할 수 있는 도구를 제공합니다. 이 때 App은 특정한 기능을 수행하는 웹 어플리케이션을 의미합니다. Project는 특정 웹 사이트를 위한 app들과 각 설정들을 한데 묶어놓은 것입니다. Project는 다수의 app을..
Python Django[장고] 시작하기 - 1 (Pycharm, Anaconda를 이용하여) Anaconda를 설치하였다면, Anaconda Python3는 기본적으로 Django 라이브러리를 제공합니다. 이를 이용하여 이번 포스팅에는 기본적인 웹 서버 기능을 구현하고자 합니다. (Anaconda 다운로드, Pycharm 다운로드) 파이참을 이용해 New Project를 선택하면 다음과 같은 화면이 보입니다. 왼편의 Django를 선택한 후, 오른편에서 적절한 프로젝트 위치와 인터프리터 경로를 설정합니다. 이후 템플릿 언어를 설정하는 칸이 있는데, 여기에는 Django와 Jinja2가 있습니다. 저는 Jinja2를 사용하겠습니다. (템플릿 언어로 Django를 사용하셔도 무방합니다.) * 장고를 개별적으로 받아서 사용하는 경우 아래와 같은 커맨드로 장고 프로젝트 생성이 가능합니다. $ djang..
2912 백설공주와 난쟁이 + a 문제 자체를 이해하기에는 어렵지 않았다. 처음 인풋으로 들어오는 난쟁이들의 모자에 대하여 해당 구간에 절반 이상 초과하는 모자의 색이 있는지만 확인하면 되는 문제이다. 처음에는 이 문제를 해결하기 위해 누적합을 사용하여 문제를 해결하려고 했다. 하지만 메모리 초과가 떴다. (난쟁이의 수 X 모자 색상 수를 하게 될 경우 30억 이상의 공간이 필요했다.) 해당 문제에 대해 구글링을 하니 굉장히 참신한 해결법이 있었다. (아래 링크)https://m.blog.naver.com/PostView.nhn?blogId=jh20s&logNo=221332226003&proxyReferer=https%3A%2F%2Fwww.google.com%2F 인덱스를 이용해 전처리 한 뒤, 이분 탐색을 이용해 문제를 해결하는 방식이..
1038 감소하는 수 감소하는 수의 조건을 이루기 위해서는 해당 수는 기본적으로 10자리를 초과할 수 없다. (0~9까지 숫자는 총 10개이므로) 이 문제는 감소하는 수라는 특성을 활용해 [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 이라는 리스트가 있을 때, 숫자 하나씩 On/Off의 개념으로 접근하여 문제를 해결할 수 있다. 이 경우 총 경우의 수는 1023(2^10 - 1)가 된다. ( 예를들어 9, 7, 4, 3, 2가 On이고 나머지 숫자들이 Off 라면 해당 숫자는 97432가 되고, 8, 4, 0이 On이고 나머지 숫자들이 Off라면 해당 숫자는 840이 된다.) 따라서 N의 최대값은 0부터 1023번째 수인 1022가 되어 1022 초과인 수는 -1을 바로 반환시키고, 이후의 과정은 1부터 1023까지..
싱글톤 패턴(Singleton Pattern) 간단하게 구현하기 파이썬 언어는 OOP(Object Oriented Programming, 객체지향 프로그래밍)로써, 다양한 개발 기법들이 존재합니다. 그 중에서 이번에 소개해드릴 기법은 디자인패턴 중에 하나인 싱글톤(Singleton)입니다. 프로그래밍을 공부하시다 보면, "아 이거는 객체처럼 쓸 수 있긴한데, 프로그램 시작할때만 생성하고 다른 어느 클래스에서 불러와도 동일한 (필드)값들을 유지하면 좋겠다." 라는 생각을 한번쯤 해보셨을 것입니다. 이를 위한 패턴이 바로 싱글톤(Singleton)입니다. 조금 더 자세히 설명을 드리자면, 싱글톤 패턴은 어떠한 클래스가 최초 한번만 메모리를 정적(Static)으로 할당하고 해당 메모리에 인스턴스를 만들어서 사용하는 기법입니다. 따라서 생성자가 여러 차례 호출되더라도 실제로..
브루트 포스(Brute Force, 완전 탐색) 브루트 포스(Brute Force)는 거의 모든 문제에 사용할 수 있는 기법으로 완전 탐색이라고도 합니다. 이 기법은 이름처럼,"맹목적으로, 모든 경우의 수를 탐색하여 결과를 도출하는 기법" 입니다. 이 기법은 어쩔수없이 모든 경우의 수를 탐색해 봐야만 하는 경우나, 모든 경우의 수를 요구하는 문제에서 주로 사용됩니다. 예를들어, 1부터 100까지의 합을 구하는 문제가 있을 때 아래와 같이 모든 경우의 수( 1부터 100까지) 탐색하여 그 합을 구하는 방식이 브루트 포스가 될 수 있습니다. 123sum = 0for i in range(1, 101): sum += ics 이 뿐 아니라 가장 대표적인 예시로, 순열을 구하는 문제가 있습니다. 예를들어, 1부터 5까지의 수를 이용해 모든 수에 대한 순열을 구하..