분류 전체보기

    [Flask]Hello world!

    Flask의 가장 큰 특징은 역시 "마이크로"프레임워크라는 점이다. 이 점은 공식 홈페이지에서도 강조하고 있기 때문에 웹 프로그램을 통해 "Hello World"를 출력하는 것도 역시 어렵지 않게 할 수 있다. Flask 공식 Documentaion Flask로 Hello World! 일단 플라스크로 프로젝트를 구성할 폴더에 파이썬 가상환경을 만들고, 플라스크를 설치한다. 플라스크의 설치 pip install Flask 그리고 프로젝트 안에 app.py 라는 스크립트 파일을 만들어(Pycharm의 Flask 프로젝트 생성 시 이미 만들어져 있음) 다음과 같은 코드를 넣고 실행하면 웹 프로그램을 볼 수 있다. from flask import Flask app = Flask(__name__) @app.rou..

    [Flask]Flask란?

    Flask란 ? 플라스크는 파이썬으로 작성된 마이크로 웹 프레임 워크의 하나이다. Flask의 특징 플라스크는 마이크로 웹 프레임워크다. 즉 간결하게 유지하고 확장할 수 있음을 의미한다. 간결하다는 것은? -> 짧은 코드만으로도 완벽히 동작하는 웹 프로그램을 만들 수 있다. 확장성 있는 설계? -> 플라스크에는 다양한 확장 모듈을 통해 입맛대로 만들 수 있다. 나는 두 가지의 프레임워크를 모두 사용해본 경험이 있다. 경험을 빌어서 차이점을 얘기해 보고자 한다. Flask vs Django 플라스크는 자유로운 프레임워크다. 그에 반해 장고는 모든 기능을 지원하는 프레임워크다. 장고는 매우 많은 기능들을 자체적으로 가지고 있고, 개발자는 그 규칙에 맞추어 코딩하여야 한다. 플라스크는 기능들을 확장 모듈들을 ..

    [백준]10828번 스택 - 스택

    import sys a = int(sys.stdin.readline()) stk = [] for i in range(a) : command = sys.stdin.readline().strip() if(command.split()[0] == 'push'): stk.append(int(command.split()[1])) elif(command == 'pop'): if len(stk) > 0: print(stk.pop()) else : print(-1) elif(command == 'size'): print(len(stk)) elif(command == 'empty'): if len(stk) == 0 : print(1) else : print(0) elif(command == 'top'): if len(st..

    [백준]1541번 잃어버린 괄호 - 그리디

    a = input().split('-') sum = 0 for i in a[0].split('+'): sum += int(i) for i in a[1:]: for j in i.split('+'): sum -= int(j) print(sum) 코드 설명 먼저 -를 기준으로 문자열을 분리시켜 저장한다. 그 후, 리스트의 첫번째 원소에 있는 숫자들을 더해주기 위해 + 로 분리하고 그 값을 더해준다. 그 다음 리스트의 두번째 원소부터 +로 모두 분리시켜 준 뒤, 그 값을 모두 뺄셈하여준다. Point : 해당 수식에서 -를 만나면 다음 -가 나오기 전까지는 모두 뺄셈을 해주면 최솟값을 만들 수 있다. 따라서, -로 문자열을 분리 시킨 후 분리되어 있는 값들은 + 이므로 수들을 더하여 준 후, 그 더한 수를 뺄셈..

    [백준]11399번 ATM - 그리디

    n = int(input()) sum = 0 result = 0 a = list(map(int, input().split())) a.sort() for j in range(n): sum += a[j] result += sum print(result) 코드 설명 먼저 각 사람이 돈을 인출하는데 필요한 시간을 a 라는 리스트에 저장한 후 정렬을 해준다. 그 후 n 만큼 반복문을 돌리면서 sum 이라는 변수에 각 사람당 걸리는 시간을 구하고 누적 시간을 구하기 위해 result 변수에 덧셈해준다. Point : 각 상황에서 가장 최소의 시간이 걸리게 하는 것이 그리디 알고리즘이 되므로, sort() 함수를 통하여 정렬을 해준다. 그 후 누적시간을 구해야 하기 때문에 sum -> 각 사람이 걸리는 시간, res..

    [백준]1931번 회의실 배정 - 그리디

    n = int(input()) a = [[1]*2 for i in range(n)] cnt = 0 check = 0 for i in range(n): a[i][0], a[i][1] = map(int, input().split()) a.sort(key=lambda x:(x[1], x[0])) for i in range(n): if a[i][0] >= check: cnt += 1 check = a[i][1] print(cnt) 코드 설명 먼저 회의의 수를 위한 n, 회의의 정보를 위한 a 리스트, 회의의 최대 개수를 위한 cnt, 끝나는 시간을 체크하기 위한 check 변수를 선언한다. 그 후 회의 수 만큼 반복문을 통해 a 리스트에 회의의 정보를 전부 할당한 후, 정렬 함수를 통하여(lambda 사용) 끝..

    [백준]11047번 동전 0 - 그리디

    import math n, k = map(int,input().split()) a = [] cnt = 0 for i in range(n): a.append(int(input())) for i in range(len(a)-1, -1, -1): if k < a[i] : continue cnt = cnt + int(k / a[i]) k = k % a[i] if k == 0: break print(cnt) 코드 설명 먼저, 입력 개수와 계산하려는 값을 map 함수를 이용하여 n, k 변수에 저장한다. 그 후 빈 리스트와 카운트를 위한 변수를 선언하고 n의 수만큼 반복문을 통해 동전의 가치를 입력받고 리스트에 저장한다. 저장된 리스트는 가장 큰 동전의 가치가 맨 뒤에 있으므로 리스트의 뒤부터 판단하여 동전의 가치..

    [백준]10814번 나이순 정렬 - 정렬

    a = int(input()) b = [[0]*2 for i in range(a)] for i in range(a): b[i][0], b[i][1] = input().split() b.sort(key=lambda x:int(x[0])) for j in range(len(b)): print(b[j][0], b[j][1]) 코드 설명 입력을 받기 위한 0으로 이루어진 이차원 리스트를 초기화 하여 준다. 반복문을 돌면서 b 리스트에 값을 할당시켜준다. 그 후, 나이 순으로 정렬하기 위해 0 번째 인덱스를 기준으로 삼는다. b 리스트의 반복문을 돌면서 나이 값과 이름을 출력하여 준다. Point : 정렬 문제이기 때문에 sort() 함수를 lambda와 함께 이용하여 정렬 기준을 잘 설정하는 것이 중요하다.

    [백준]1181번 단어 정렬 - 정렬

    n = int(input()) a = [] b = [] for i in range(n): a.append(input()) a.sort(key=lambda x:(len(x), x)) for i in a: if i not in b: b.append(i) for j in range(len(b)): print(b[j]) 코드 설명 우선 a 리스트에 입력 문자들을 전부 할당한다. 그 후 sort() 함수를 이용하여 정렬하는데 첫 번째 기준은 문자열의 길이이고, 두 번째 기준은 오름차순으로 정렬한다. 또한, 중복을 제거하기 위하여 빈 리스트를 활용한다. a 리스트의 요소들을 반복문으로 돌면서 b 리스트에 복사하는데 중복인 요소가 있을 경우는 제외시킨다. 그 후 b 리스트를 출력시키면 완료된다. Point : 정렬을..

    [백준]11650번 & 11651번 좌표 정렬하기 1, 2 - 정렬

    n = int(input()) a = [[0] * 2 for i in range(n)] for i in range(n): a[i][0], a[i][1] = map(int,input().split()) a.sort(key=lambda x: (x[0], x[1])) for i in range(len(a)): print(a[i][0], a[i][1]) 코드 설명 이중 리스트를 점의 개수만큼 초기화 하고 하나의 리스트 당 2개의 원소를 갖도록 초기화 한다. 반복문을 통하여 리스트에 값을 넣어준다. sort() 함수의 key 값으로 lambda 를 이용하여 리스트의 0번째 인덱스를 기준으로 정렬한 후, 그 다음 정렬은 1번째 인덱스를 기준으로 정렬한다. Point : sort() 함수를 이용시 정렬 기준을 2개로..