반응형 파이썬21 [장고] 장고(Django) 를 공부할 때 필요한 기본지식 웹 프로그래밍 ( 홈페이지 만들기, 웹 서비스 만들기) - Frontend 화면(웹 브라우저에서 동작하는 코드) : HTML, CSS, JS - Backend 서버(데이터를 입출력하거나, 계산하거나 하는.. 서버에서 동작하는 코드) : Python, Ruby, Java, PHP, JS, C#...등등 앵간한 언어들 다 사용 가능 (+@ GO, Erlang, Perl) HTTP - 웹 사이트 동작 방식 웹 브라우저 주소창에 URL 입력 후 엔터 URL을 이용해서 서버의 IP를 찾는다. IP를 이용해서 서버에 접속 URL에 해당하는 자료를 요청 웹 어플리케이션이 URL을 해석해서 해당하는 코드가 동작 코드의 동작 결과를 응답으로 돌려줌 서버가 웹 브라우저쪽으로 데이터를 보내줌 웹 브라우저가 응답받은 데이터를.. Language/Python&Django 2021. 10. 29. [알고리즘] 그리디 알고리즘 ( 탐욕 알고리즘 ) (Python, Java) 출처 - 이코테 2021 그리디 알고리즘 - 그리디 알고리즘(탐욕 알고리즘) 은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. - 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다. - 그리디 해법은 그 정당성 분석이 중요하다. - 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토한다. 그리디 알고리즘 - 루트 노드부터 시작하여 거쳐 가는 노드 값의 합을 최대로 만들고싶다. - Q. 최적의 해는 무엇인가? - Q. 단순히 매 상황에서 가장 큰 값만 고른다면 어떻게 될까? - 그리디 알고리즘은 이처럼 매 상황에서 가장 큰값만 고르는 방식이라 최적알고리즘보다는 값이 작을 수 있다. - 일반적인 상황에서 그리디 알고.. ETC/알고리즘 이론 2021. 10. 19. [Python] 코딩테스트 대비 잊기 쉬운 기본 지식 총정리 출처 - 이코테 2021 빅오 표기법(Big-O Notation) - 가장 빠르게 증가하는 항 만을 고려한 표기법 : 함수의 상한만을 나타낸다. - 3n^3 + 5n^2 + 1000000 인 알고리즘은 O(n^3)으로 표현됨. 알고리즘 설계 팁 - 일반적으로 CPU 기반의 개인 컴퓨터나 채점용 컴퓨터에서 연산 횟수가 5억을 넘어가는 경우 : - C언어를 기준으로 통상 1 ~ 3초 가량의 시간이 소요 - Python을 기준으로 통상 5 ~ 15초 가량의 시간이 소요 - PyPy의 경우 때때로 C언어보다도 빠르게 동작하기도 함! - O(n^3)의 알고리즘의 경우, N의 값이 5000이 넘는다면 약 1250억정도... - 파이썬은 1초에 약 5천만번정도 계산이 가능 -> 약 2500초정도 걸림(?!) 따라서 .. ETC/기타 2021. 10. 14. [파이썬] 1436 : 영화감독 숌 문제 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다. 종말의 숫자란 어떤 수에 6이 적어도 3개이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 숫자는 666이고, 그 다음으로 큰 수는 1666, 2.. 코딩테스트/알고리즘 문제풀이 2021. 8. 30. [파이썬] join() 을 이용해 문자열 사이에 구분자(특정문자) 넣기 Join 함수? - 리스트에 특정 구분자를 추가하여 문자열로 변환하는 함수 예시 lst = ['a', 'b', 'c', 'd'] print( ''.join(lst) ) # abcd print( ','.join(lst) ) # a,b,c,d print( '--'.join(lst) ) # a--b--c--d lst = ['Apple', 'Banana', 'Mango', 'Orange'] print( ' + '.join(lst) ) # Apple + Banana + Mango + Orange nums = [1,2,3,4] print( '-'.join(map(str,nums)) ) # 1-2-3-4 lst = ['Apple', 'Banana', 'Mango', 'Orange'] print( ', '.join(f.. Language/Python&Django 2021. 8. 20. [알고리즘] 리스트의 모든 조합 구할때 고려할점 (permutations, combinations VS product) (Python) 리스트 내의 값들의 모든 조합을 구하기 위해 itertools를 사용하는것은 다 알고 있을것이다. 2021.08.06 - [/[Algorithm]] - [파이썬] 경우의 수 (순열, 조합) 구하기 - itertools [파이썬] 경우의 수 (순열, 조합) 구하기 - itertools import itertools itertools 라이브러리를 사용하여 원소들의 순열과 조합을 사용할 수 있다. 1. 순열 순열은 서로 다른 n개 중, r개를 나열하는 경우의 수로 permutations 함수를 사용한다. def permutation(sel.. earthteacher.tistory.com 하지만, 문제를 풀다 자주 부딪히는 고민이 생겨 따로 포스팅을 하게 되었다. 바로 단일 리스트 내부 원소들의 조합을 구할때 .. ETC/알고리즘 이론 2021. 8. 20. [파이썬] 7568 : 덩치 문제 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165) 라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 각각 (45, 181), (55, 173)이라면 몸무게는 D가 C보다 더 무겁고, 키는 C가 더 크므로, "덩치"로만 볼.. 코딩테스트/알고리즘 문제풀이 2021. 8. 20. [파이썬] 2231 : 분해합 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다. 예제 입력 1 복사 216 예제 출력 1 복사 198 brute force 말고 뭔가 따로 .. 코딩테스트/알고리즘 문제풀이 2021. 8. 12. [파이썬] 2798 : 블랙잭 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. N장의 카드에 써져 있는 숫자가 주어졌을 때, .. 코딩테스트/알고리즘 문제풀이 2021. 8. 8. [알고리즘] 재귀함수 (Recursive Function) 재귀함수 재귀함수란 함수 내에서 자기 자신을 호출하여 작업을 수행하는 방식의 함수이다. 재귀함수를 작성할 때는 함수 내에서 자기 자신을 다시 호출한 후, 그 함수가 끝날 때까지 함수 호출 이후의 명령문이 수행되지 않는다는 사실과 종료조건이 꼭 포함되어야한다는 부분을 인지하고 작성하면 오버플로우를 피할 수 있다. 다시말해 재귀함수에서 중요한 부분은 실행을 마무리짓는 부분과, 계속 재귀를 실행하는 부분이 존재한다는것이다. 또한 그것이 일반적으로는 n이 0이나 1이 되면 종료하게 되게끔 구성이 되어있다. 1. 카운트다운 def countdown(n) : # 0 이 되는순간 end 출력 if n==0 : print("end") # 받은 인자 출력 및, n-1 한값을 다시 재귀 else : print(n) cou.. ETC/알고리즘 이론 2021. 8. 2. [파이썬] 리스트 출력 : 한줄에 하나의 요소씩 출력하는 방법 파이썬에서 print()를 사용하여 리스트를 출력하게되는 경우 기본적으로 한줄에 모든 요소들이 표시된다. 각각의 요소들을 줄 단위로 나누어 출력하는 방법엔 어떤게 있을까? for 문 temp = [1, 2, 3, 4, 5] for i in temp: print(i) 1 2 3 4 5 print()는 기본적으로 출력 후, 개행문자를 추가해준다. print()의 sep 옵션 print(1, 2, 3, 4, 5) print('가', '나', '다', '라', '마', sep='\n') 1 2 3 4 5 가 나 다 라 마 위에서 볼 수 있듯이 sep에 따라 결과가 달라진다. 여러 요소를 특정 조건을 걸어 출력하는 경우, sep 인자에 원하는 구분자를 넣어 구분자를 요소들 사이에 출력할 수 있다. ( 기본은 공백.. Language/Python&Django 2021. 7. 29. [파이썬] 1002 : 터렛 문제 조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다. 이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다. 조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 이루어져 있다. 한 줄에 x1, y1, r1, x2, y2, r2가 주어진다. x1, .. 코딩테스트/알고리즘 문제풀이 2021. 7. 28. 이전 1 2 다음 반응형