코딩일지 218

20020918 WIL

이번주동안 한 일 python 강의 마무리 python 과제 - 클래스 심화, 파이썬 심화 문법, 조건문, 반복문 백준 알고리즘 문제 풀이 및 정리 python https://yaun.tistory.com/166 20220913 클래스 활용해보기 1. 도형 넓이 계산기 num1 = int(input('첫 번째 숫자를 입력 : ')) num2 = int(input('두 번째 숫자를 입력 : ')) class calc_area: def __init__(self, num1, num2): self.num1 = num1 self.num2 = num2 def sq.. yaun.tistory.com https://yaun.tistory.com/180 20220914 파이썬 과제 1. 계산기 심화 num1 = inpu..

20220916 TIL

오늘의 한 일 python 강의 복습 백준 알고리즘 문제 풀이 - 재귀 python 강의 및 과제물 복습 백준 알고리즘 문제 풀이 - 재귀 ** 재귀함수 파이썬에서 사용시 최대깊이 설정 import sys sys.setrecursionlimit(10**6) # 재귀함수 최대깊이 설정 ** input 대신 sys.stdin.leadline() 쓰는 이유 https://growingarchive.tistory.com/157 하노이의 탑 알고리즘 www.youtube.com/watch?v=FYCGV6F1NuY https://han-py.tistory.com/224 [python] 재귀함수(recursive function) python의 꽃. DFS의 필수 개념인 재귀 함수에 대해 알아보자. 왜 재귀 함수를 ..

백준 알고리즘 - 재귀 풀이 시 고려해야 할 것

재귀함수 파이썬에서 사용시 최대깊이 설정 import sys sys.setrecursionlimit(10**6) # 재귀함수 최대깊이 설정 input 대신 sys.stdin.leadline() 쓰는 이유 https://growingarchive.tistory.com/157 [Python/파이썬] 파이썬 입력받는 방법 with input()과 sys.stdin.readline() 백준 입출력 문제를 풀면서 가장 신경써야했던 부분은 '제한시간'이였다. 문제를 제대로 풀었어도 제한시간을 초과해버리면 오답이기 때문이다. 보편적으로 입력받는 방법은 input함수를 쓰는 growingarchive.tistory.com 하노이의 탑 알고리즘 www.youtube.com/watch?v=FYCGV6F1NuY

20220915 과제

1. 조건문 def get_grade(score): # some code if score > 90: return "A" elif score > 80: return "B" elif score > 70: return "C" else: return "F" score = int(input("점수를 입력 : ")) grade = get_grade(score) print(grade) # A ~ F 2. 반복문(while) isdigit 함수를 통해 input된게 숫자인지 아닌지를 걸러내고 exit를 입력하거나(a == "exit") 다섯번 반복할때까지 (if cnt > 4: break) 반복. 뭔가 좀 더 깔끔하게 만들 수 있을거같은데 애매하네.. cnt = 0 while 1: a = input("문자 혹은 숫자를..

20220915 TIL

오늘의 한 일 python 강의 6일차 파이썬 과제 백준 알고리즘 문제 풀이 - 기본 수학2 python 강의 6일차 python 심화 함수 심화 인자에 기본값 지정해주기 # 함수를 선언할 때 인자에 기본값을 지정해줄 수 있습니다. EXPRESSION = { 0: lambda x, y: x + y , 1: lambda x, y: x - y , 2: lambda x, y: x * y , 3: lambda x, y: x / y } def calc(num1, num2, option=None): # 인자로 option이 들어오지 않는 경우 기본값 할당 """ option - 0: 더하기 - 1: 빼기 - 2: 곱하기 - 3: 나누기 """ return EXPRESSION[option](num1, num2) if..

python 백준 알고리즘 9020번: 골드바흐의 추측

https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 일단 소수를 구하는 함수를 만들어놓고 두 소수의 차이가 가장 작은것을 출력해야하니 a, b를 각각 num // 2 으로 중간점부터 비교하는 식으로 구상해보았다. 내 제출 from math import sqrt def prime(n): # 소수 구하기 함수 if n == 1: return False for i in range(2, int(sqrt(n)) + 1): if n % i..

python 백준 알고리즘 4948번: 베르트랑 공준

https://www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net n부터 2n까지의 소수 구하기 이번엔 제곱근을 이용하여 소수를 구해도 시간초과에 걸린다;; 문제에서 주어진 범위 내 소수를 먼저 구한 뒤 리스트를 대조하는 형식으로 문제 해결 덤으로 제곱근을 구하는데 파이썬 math 라이브러리를 import 하여 안에 정의된 sqrt 함수를 이용했다. from math import sqrt def prime(n): # 소수 구하기 if n == 1: ret..

python 백준 알고리즘 1929번: 소수 구하기

https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 이전에 구했던 대로 소수 찾는 알고리즘을 사용했을 시에 시간초과가 뜨게 된다 num1, num2 = map(int, input().split()) for i in range(num1, num2 + 1): if i == 1: # 1은 소수가 아니므로 제외 continue for j in range(2, i): # 2부터 i-1까지 if i % j==0: # 나누어 떨어지는 수가 있다면 break break else: print(i..

python 백준 알고리즘 11653번: 소인수분해

https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 2부터 시작해서 해당 숫자로 나눌 수 없을때까지 나누고 다음숫자를 넣는 방식으로 구상 n = int(input()) for i in range(2, n+1): # 2부터 하나씩 나눠보기 if n % i == 0: while n % i == 0: # 해당 숫자로 나눌 수 없을 때까지 나누기 print(i) n = n / i i에 +1 해주면서 반복문을 돌리는 식으로 깔끔하게 구상했다. 내 제출 n = int(input()) i = 2 while n != 1: # n이 1 이상일때 if n % i == 0: # 더 나눌..

python 백준 알고리즘 2581번: 소수

https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 1978번 문제의 소수 찾기 매커니즘을 그대로 가져와서 적용, 리스트 안에 append 하는식으로 소수 리스트 작성. 소수 리스트에 하나라도 있다면 sum(소수리스트), min(소수리스트) 로 합과 최솟값 출력 없다면(else) -1 출력 내 제출 num1 = int(input()) num2 = int(input()) cnt = [] for num in range(num1, num2 + 1): # num1부..