전체 글 126

(파이썬 python) 백준 1010번 : 다리 놓기

조합 공식을 이용해서 풀 수 있는 문제였다. 고등학교때 이후로 머리속에서 꺼내보지 않았던 개념이라 인터넷으로 다시 조합공식을 찾아보기도 했다....하핳 펙토리얼(fac)함수를 정의하고 정의한 함수를 이용해서 조합 공식을 만들어서 풀었다. # 1010번 : 다리놓기 # 조합(Combination)공식을 이용해서 쉽게 풀 수 있다. t = int(input()) def fac(n): num = 1 for i in range(1,n+1): num *= i return num for _ in range(t): m,n = map(int,input().split()) bridge = fac(n) // (fac(m)*fac(n-m)) print(bridge)

(파이썬 python) 백준 2193번 : 이친수

# 2193번 : 이친수 # 재귀방법으로 피보나치 수열을 만들면 시간복잡도가 크기 때문에 시간초과가 난다. # tablatoin 방법으로 만들면 시간면에서 훨 효율적이다. n = int(input()) table = [0]*91 table[1] = 1 table[2] = 1 for i in range(3,n+1): table[i] = table[i-1] + table[i-2] print(table[n]) n=1 : 1 n=2 : 1 n=3 : 2 n=4 : 3 n=5 : 5 n=6 : 8 ... 처음엔 그냥 숫자들을 적어보다 보니 규칙을 발견할 수 있었다. 피보나치 수열과 같은 규칙이었다. 재귀방법으로 문제를 풀게 되면 시간복잡도가 커지고 시간초과가 난다 tablation방법으로 피보나치 수열을 구현하면..

[django] ImageField upload_to 동적 업로드(함수 사용)

장고 imagefield에서 image데이터를 업로드할 때 dynamic upload가 가능하다. 장고에서 사용자가 사용하는 폴더가 media라고 보통 정해놓는데 이 media폴더에 이미지를 업로드할 때 이름을 따로 지정해주는 것을 dynamic upload라고 한다. ImageField의 upload_to옵션은 이미지가 저장되는 경로를 넣어주는 옵션인데 여기에 함수를 만들어서 동적 업로드가 가능하게 할 수 있다. # models.py def image_upload_to(instance, filename): ext = filename.split('.')[-1] # 이미지 파일 형식 따오기 return os.path.join(instance.UPLOAD_PATH, "%s.%s" % (uuid.uuid4()..

[django] debug_toolbar 세팅

django debug 툴바 설치 및 세팅 방법입니다. 1. install Package pip install django-debug-toolbar pip install -e git+https://github.com/jazzband/django-debug-toolbar.git#egg=django-debug-toolbar 둘중 한 방법을 선택해서 사용하고 있는 가상환경에 django-debug-toolbar패키지를 설치해준다. 2. Check for Prerequisites 이 설정은 startproject를 할 때 이미 세팅이 되는 부분이라서 웬만하면 따로 손볼일은 없고, 아래 코드처럼 되어잇는지 확인만 하면 된다. # 프로젝트 디랙토리/settings.py INSTALLED_APPS = [ # ... ..

[django] Related Field got invalid lookup: icontains 오류

search_fields 옵션에 원하는 필드들을 넣어서 admin페이지에서 검색 가능하도록 만들려고 하는 중에 "Related Field got invalid lookup: icontains" 이런 오류에 맞딱뜨렸다. 아래 코드가 admin.py에서 오류가 났었던 코드이다. models.py를 보면 title, content 필드는 Post테이블 자체필드이지만 username 은 User라는 테이블에서 외래키로 연결시켜놓은 상태이다. 즉 username필드는 User테이블과 연결시켜주는 고유값일 뿐이다. 따라서 django는 User테이블에서 어떤 필드를 가지고 검색해야 하는지 모르는 것이다. 그래서 에러가 났을 뿐... # models.py class Post(BaseModel): username = ..

[django] User모델 커스터마이징 할 때 오류

AbstractUser를 사용해서 User모델을 커스터마이징 하고 나서 마이그레이션 할 때 아래와 같은 오류가 났을 때 해결방법 장고에서 만들어 둔 User 모델이 아니라 내가 커스텀해서 만든 User모델을 사용하고자 하는 것이므로 장고한테도 이 사실을 알려줘야 한다. 프로젝트 디렉토리의 settings.py에 AUTH_USER_MODEL 환경 변수를 '[앱이름].[모델이름]'이런식으로 지정해주면 된다. 예시) AUTH_USER_MODEL = 'users.User'

[django] ImageField Form 이미지 업로드하기.

django Form에서 이미지를 업로드해서 DB에 저장하는 기능을 구현하는 방법이다. 이미지 파일이 form에서 view로 넘어가지도 않는 문제, view에서 조회하는 문제들을 해결하였다. 1. media폴더 경로 설정 프로젝트 폴더 settings.py 마지막줄에 MEDIA_URL, MEDIA_ROOT 추가 # setting.py # ... 이외의 기본 세팅들 MEDIA_ROOT = BASE_DIR/'media' MEDIA_URL = '/media/' 프로젝트 폴더 urls.py에 urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 추가 # urls.py from django.contrib import admin f..

(파이썬 python) 백준 13904번 : 과제(greedy)

점수가 큰 과제를 뒤에서부터 채워나가는 방법으로 과제를 해결하도록 계획을 세워야 한다. (처음엔 점수가 큰 과제부터 한다거나 마감일이 빠른 과제부터 끝내는 방법을 생각해보았지만 답은 아니었다.) 마감일 | 점수 4 | 60 4 | 40 1 | 20 2 | 50 3 | 30 4 | 10 6 | 5 이렇게 과제와 마감일이 주어져있을 때 가장 점수가 높은 과제부터 마감일부터 뒤로 계획을 세워준다. 60점 과제는 4일째 50점 과제는 2일째 40점 과제는 4일째에 이미 60점짜리를 해야하므로 3일째 30점 과제는 3일째, 2일째 이미 다른 과제가 있으므로 1일째 20점,10점 과제는 남은 기간이 없으므로 패스 5점 과제는 6일째 이런 식으로 이런 알고리즘을 구현하는 데엔 heap 자료구조를 사용하는 것이 유용하..

알고리즘/Greedy 2022.05.13

(파이썬 python) 백준 1213번 : 팰린드롬 만들기(greedy)

구글링에서 본 것중 가장 직관적이고 쉬운 풀이를 가져왔다. names = input() name_cnt = [0 for _ in range(26)] for name in names: name_cnt[ord(name)-65] += 1 odd = 0 odd_alpha = '' alpha = '' for i in range(26): if name_cnt[i] % 2 == 1: odd += 1 odd_alpha += chr(i+65) alpha += chr(i+65) * (name_cnt[i] // 2) if odd > 1: print("I'm Sorry Hansoo") else: print(alpha+odd_alpha+alpha[::-1]) # 참고 : https://alpyrithm.tistory.com/1..

알고리즘/Greedy 2022.05.12