📖 question https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net ✍️ answer n = int(input()) result = 1 count = 0 for i in range(1, n+1): result *= i result = str(result) for j in reversed(result): if j == '0': count += 1 else: break print(count)
📕 값은 표현식이 평가되어 생성된 결과를 말한다. 10 + 20이라는 표현식이 평가되어 생성된 결과 30이 값이다. 모든 값은 데이터 타입을 가진다. 이진수로 저장된 값 0100 0001을 숫자로 해석하면 65, 문자로 해석하면 'A'다. 값은 보통 리터럴을 사용하여 생성한다. 📕 리터럴은 사람의 문자, 기호를 사용해 값을 생성하는 표기법을 말한다. 숫자 3을 입력하면 자바스크립트 엔진은 리터럴 3을 평가해 숫자 3을 생성한다. 더보기 리터럴 종류 📕 표현식은 값으로 평가될 수 있는 문장이다. 표현식이 평가되면 새로운 값을 생성하거나 기존값을 참조한다. [1] 리터럴도 값이므로 그 자체로 표현식이다. [2] score = 50+50도 평가되어 숫자를 생성하므로 표현식이다. [3] score 식별자를 참조..
📖 question https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net ✍️ answer dwarf = [] for i in range(9): dwarf.append(int(input())) # 한 줄로 가능: dwarf = [int(input()) for _ in range(n)] for i in range(8): # ([0]+[1]) ([0]+[2]) ([0]+[3]) ... ([7]+[8]) for j in range(i+1, 9): if sum(dw..
다이나믹 프로그래밍 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 향상시키는 방법 이미 계산된 결과는 메모리에 저장하여 다시 계산하지 않도록 한다. DP의 구현은 탑다운(위에서 아래로), 보텀업(아래서 위로)으로 구성된다. 동적 계획법이라고도 한다. 최적 부분 구조: 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아 큰 문제를 해결할 수 있다. 중복되는 부분 문제: 동일한 작은 문제를 반복적으로 해결해야 한다. DP 대표문제 (피보나치 수열) 1 1 2 3 5 8 13 21 34 55 ... 이 수열에서 알아낸 항들 사이의 관계식을 점화식이라고 한다. 계산되는 과정을 나타내는 표를 배열이나 리스트로 표현할 수 있다. 점화식으로 표현될 수 있는 구조는 재귀함수를 이용해 프로그램 상에 ..
📄 render_template (html 연결) from flask import Blueprint, render_template views, auth 파일의 import 부분에 render_template를 연결해준다. def home(): return render_template("home.html") 함수의 return 부분에 연결해주면 괄호 안에 html이 연결된 것이다. Bootstrap https://startbootstrap.com/theme/clean-blog에서 미리 만들어진 html 템플릿을 다운받아 적용해보려 한다. html 파일들을 모두 template 폴더에 넣어주고 실행하면 아래 화면이 나온다. 👇 다운받은 html 파일들은 head, nav, footer부분이 반복되는 형태인 ..
vscode 터미널에서 설치 pip3 install flask pip3 install Flask-SQLAlchemy pip3 install flask-login 📁 __init__.py 파일 만들기 from flask import Flask from flask_sqlalchemy import SQLAlchemy from os import path from flask_login import LoginManager def create_app(): app = Flask(__name__) app.config['SECRET_KEY'] = "helloworld" @app.route("/") def home(): return "hello" return app website 폴더 안에 파일을 만들고 위의 코드를 입력한..
x = int(input()) d = [0]*30001 for i in range(2, x+1): # 1로 만드니까 2부터시작 d[i] = d[i-1]+1 # 가정 (최소연산횟수) if i % 2 == 0: d[i] = min(d[i], d[i//2]+1) # 2로 나누어 떨어졌을때나, 1을 뺀값중에 더 작은 값을 넣음 if i % 3 == 0: d[i] = min(d[i], d[i//3]+1) if i % 5 == 0: d[i] = min(d[i], d[i//5]+1) print(d[x])
이진 탐색 알고리즘 순차 탐색: 특정한 데이터를 찾기 위해 앞에서부터 하나씩 확인하는 방법 이진 탐색: 정렬된 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 (시작점, 끝점, 중간점을 이용하여 탐색 범위 설정) 이진 탐색 소스코드: 재귀적 구현 def binary_search(array, target, start, end): if start > end: return None mid = (start+end)//2 # 찾은 경우 중간점 인덱스 반환 if array[mid] == target: return mid # 중간점의 값보다 찾고자하는 값이 작은 경우 왼쪽 확인 elif array[mid] > target: return binary_search(array, target, start, m..