전체 글
-
Python | 백준 11444 / 피보나치 수 6Algorithm 2023. 6. 19. 16:04
http://boj.kr/11444 11444번: 피보나치 수 6 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net n 번째 피보나치 수를 구하는 문제이다. n은 100경까지 주어지는 문제이다. n이 크기 때문에 수를 1,000,000,007 ( 10억 7 ) 로 나눈 나머지를 출력하면 된다. 1. 문제를 풀고 나서 보니 대부분의 풀이가 행렬의 거듭제곱으로 풀어낸 문제였다. 원래 피보나치 수는 DP를 이용하여 구하지만, 이 문제는 100경번째 수까지 구해야 하기 때문에 기존의 O(n)의 풀이로는 풀 수 없다. 공간복잡도 또한 O(n), 줄이면 O(2) 까지 줄일 수 있을 것 같지만 시간 복잡도에서 걸린다. 행렬의 거듭제..
-
Python | 크롤링 도중 None 객체가 여러번 반환된다면?python 2022. 12. 21. 01:31
- 문제상황 Django 프로젝트를 진행하며 웹 스크랩핑을 하면서 문서에 요소가 존재하지 않아 None 객체를 반환하거나, IndexError가 반환되어 크롤링을 하던 프로그램이 멈추는 경험을 했다. 프로젝트 회고록은 이후 작성할 예정이다. 내가 팀장이 되어 팀원들이 크롤링 작업을 하는 상황이었다. 프로젝트를 진행하는 도중, 팀원 두명이 나에게 와 여러 개의 객체가 있을수도 있고 None일수도 있는 상황인데 모든 줄에 if-else를 추가해야 하냐고 물어보았다. import requests from bs4 import BeautifulSoup link = '' res = requests.get(link) soup = BeautifulSoup(res.text, 'html.parser') item = sou..
-
Django | URLConf 에서 lambda의 활용python 2022. 12. 7. 00:04
- 문제상황 Django 실습을 하면서 URLConf를 설정해 주다가 만약 사용자가 localhost:8000/ 으로 접속한다고 가정했을 때 localhost:8000/hotdeal/ 로 redirect를 해주려면 어떻게 코드를 작성할 지 고민 - 해결방안 프로젝트 관리 폴더에 views.py, urlpatterns에 함수 및 path 추가 # project_name/urls.py from django.urls import path, include from .views import redirect_func urlpatterns = [ path('hotdeal/', include('hotdeal.urls')), path('', redirect_func), ] # project_name/views.py fr..
-
JAVA | 명품 JAVA / 4장 12번 실습문제 코드 공유 / 생각정리Java 2022. 10. 28. 00:32
https://github.com/chomu97/JavaPractice/blob/main/Chapter04Ex12.java GitHub - chomu97/JavaPractice Contribute to chomu97/JavaPractice development by creating an account on GitHub. github.com 먼저 코드를 구현하면서 무슨 생각을 했는지 정리해보겠다. 기본적인 틀은 앞의 글에서 말한 것처럼 구현했다고 생각했다. 각각의 클래스를 만들면서 했던 생각을 정리해보자. 가장 기본적인 클래스인 Seat 클래스는 최대한 간단하게 만들어보려고 했다. 왜냐하면 필요한 데이터는 이름만 저장하면 되었기 때문에 좌석번호나 등급을 나타내는 필드 변수는 필요없지 않나 ? 라는 생각이었..
-
JAVA | 명품 JAVA / 4장 12번 실습문제를 풀기전 생각정리Java 2022. 10. 27. 23:22
요즘 자바를 배우기 시작해서 파이썬에 대한 글을 많이 못썼다 ... 반성한다 내자신 .. 자바에서 클래스를 배우면서 4장 연습문제들을 쭉 풀어보았는데, 11번까지는 내 마음대로 수정할 수 없어서 그냥 쉽게 풀었다. 학원에서 오늘 하루종일 자습시간( 무려 8시간이나..! )을 주길래, 어제와 그제 새벽까지 11번을 미리 풀어와 12번을 여유롭게 풀어볼 수 있었다. 근데 이것마저 할만하다! 라는 느낌이 들어서 ... 같은 4장 7번 실습문제에 있던 MonthSchedule이 떠올라 그냥 무작정 달력도 추가해보자는 아이디어로 이 문제를 시작하게 되었다 .. 어제 새벽에 11번을 풀고 나서 12번은 대강 틀만 짜놓고 자자~ 해서 만들어진 코드 class Seat{ private String name; priva..
-
Python | 백준 9012 / 크레인 인형뽑기 게임Algorithm 2022. 8. 29. 17:29
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 접근 방식? 스택에 ( 모양이라면 넣고, ) 모양이라면 스택의 맨 위와 비교하여 ( 모양과 맞다면 넣지 않고 다음으로 넘어간다. VPS인지 아닌지는 스택이 비어있는지 확인하여 판단한다. > code 더보기 N = int(input()) for _ in range(N): stack = [] ps = input() for w in ps: if not stack: stac..
-
Python | 스택, 큐자료구조 2022. 8. 24. 18:03
Stack 파이썬에서 리스트가 사실상 스택의 모든 연산을 지원하기 때문에 간단하게 정리하고 넘어간다. 메소드 push(e) : 요소를 컬렉션에 추가 pop() : 아직 제거되지 않은 가장 최근에 삽입된 요소를 제거 peek() : 가장 최근에 삽입된 요소 확인 간단한 구현 2가지 ( 리스트, 연결 리스트 ) class Stack(list): push = list.append def peek(self): return self[-1] # pop은 내장함수에 있어 구현 X class Node: def __init__(self, item, next): self.item = item self.next = next class Stack: def __init__(self): self.last = None def pu..
-
Python | *, **의 의미python 2022. 8. 2. 17:54
*args *args 는 *arguments 의 줄임말로 가변 파라미터를 얘기한다. 함수를 정의하면서 argument가 n개 이상 ( 0개도 포함 ) 들어올 수 있다면 (몇 개가 들어올지 모른다면) 가변 파라미터를 정의하면 된다. `*` 를 이용하여 파라미터명을 정의하면 된다. 일반적으로 *args라고 사용한다. 함수 내부에서 튜플로 묶인다. do_func 파라미터로 4개를 넣었다. 첫 번째 출력 결과를 보면 튜플로 묶여 있는 것을 확인할 수 있고, 이에 sum함수도 실행 가능하다. list로 출력해 줄 수도 있다. * unpacking *는 unpacking의 의미로 사용되기도 한다. do_func(*args) 안의 *args는 가변 파라미터를 정의한 것이고, *lst의 경우가 unpacking이다. ..