전체 글 270

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

재귀함수 파이썬에서 사용시 최대깊이 설정 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("문자 혹은 숫자를..

PSY - 끝

https://youtu.be/Onsm9f2W8Ec 너를 처음 본 그날을 잊지 못하는 나 Uh, uha, yo, yo Keep on, keep on 너의 머리속은 나를 귀찮아하는 생각 잔뜩 나를 피하려는 마음만 잔뜩 하지만 내 머리속은 니 모습만으로 가득 나를 등지고 서있는 너를 혼자보고 혼자 좋아했던 내가 문득 너를 잊겠다 마음 먹었어 처음부터 지금까지 너무 힘들었어 무관심도 아닌 편견과 오해로 인해 나를 모르는채 나를 나쁘게 생각하는 너의 관심을 얻어보려 그냥 니가 아는 사람중의 한명이 되어보려 너무나 애써 너에게 다가갔어 아직도 한참 멀지만 그래도 조금 가까워진게 너무나 행복했어 항상 너에게 감사했어 너를 알게 되어서 너와 전화할 수 있게 되어서 가끔이라도 너를 들을수 있다는게 너무나 행복했어 행복..

취미/music 2022.09.15

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부..

python 백준 알고리즘 1978번: 소수 찾기

https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 소수는 1과 자기 자신으로만 나누어 떨어지는 수 2~(자기자신-1)까지 반복문으로 나눠서 몫이 0으로 나누어 떨어지면 소수가 아니다 (error+1) error == 0 인 수들 카운트 내 제출 n = int(input()) nums = map(int, input().split()) cnt = 0 for num in nums: error = 0 if num > 1: # 1보다 큰 수부터 for i in range(2, num): # 2부터 num-1까지 if num..