분류 전체보기 206

파이썬 백준 6603 로또

l = '' while l != [0] : l = list(map(int, input().split())) S = l[1:] sol = [] def DFS(picked, newpick) : if len(picked) == 5 : sol.append(picked + [newpick]) for i in S : if i > newpick : DFS(picked + [newpick], i) for x in S : DFS([], x) for i in range(len(sol)) : for j in range(len(sol[i]) - 1) : print(sol[i][j], end = ' ') print(sol[i][-1]) print() 이미 픽된 리스트 picked와 새로 list에 넣는 숫자 newpick을 함..

파이썬 백준 1924 2007년

x, y = map(int, input().split()) daylist = [0,31,28,31,30,31,30,31,31,30,31,30,31] sum = 0 for i in range(x) : sum = sum + daylist[i] sum = sum + y if sum % 7 == 1 : print('MON') if sum % 7 == 2 : print('TUE') if sum % 7 == 3 : print('WED') if sum % 7 == 4 : print('THU') if sum % 7 == 5 : print('FRI') if sum % 7 == 6 : print('SAT') if sum % 7 == 0 : print('SUN') 2007년 x월 y일은 2007년 x-1월까지의 모든 일수를..

파이썬 백준 17478 재귀함수가 뭔가요?

n = int(input()) print('어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.') depth = -1 def bot(n) : global depth depth = depth + 1 print('____'*depth + '"재귀함수가 뭔가요?"') if depth < n : print('____'*depth + '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.') print('____'*depth + '마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.') print('____'*depth + '그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."') bot(n) else ..

파이썬 백준 2748 피보나치 수 2

n = int(input()) if n == 1 : print(1) else : list = [0, 1, 0] for i in range(n-1) : list[2] = list[0] + list[1] list[0] = list[1] list[1] = list[2] print(list[2]) a_n+a_n+1=a_n+2인 피보나치 수의 정의를 이용 n번째 피보나치 수를 구하기 위해 for문.이 n번 돌아가니 큰 n에 대해서는 쓰기 힘들다 큰 n을 다루는 변형문제도 있던데 그땐 하노이의 탑처럼 수학적으로 구해둔 일반항을 출력하는 것이 맞을 것 같다. 근데 피보나치는 일반항에 무리수가 들어가는데 정확한 값이 나올진 몰루

정렬 알고리즘

Selection sort 리스트의 i번째까지 정렬된 상태에서 나머지 n-i개의 리스트를 훑는다 그중 가장 작은 원소를 찾아 i+1번째에 놓는다 나머지가 없어질 때까지 반복 Insertion sort 리스트의 i번째까지는 정렬된 상태에서 리스트의 i+1번째 원소를 본다 이미 정렬된 길이 i의 리스트를 훑으면서 i+1원소가 들어갈 위치를 찾아 넣는다 n번째 원소까지 반복 Bubble sort 이웃한 두 원소를 비교해서 정렬한다 한칸씩 이동하며 n-1번 반복하면 가장 큰 원소 하나가 리스트 끝에 온다. n개의 원소가 모두 정렬될 때까지 위를 반복 단순히 (n-1)C2번의 모든 비교를 수행하는 selection, insertion, bubble의 시간복잡도는 n^2이다 리스트의 처음부터 끝까지 훑는 작업을 n..

DFS와 BFS에 대한 생각 (뇌피셜)

저는 DFS랑 BFS를 쓰는 문제를 딱 하나씩만 풀어봤고 이사람이 하는 말은 아무 공신력이 없습니다. DFS BFS를 이제 다음주차에 배울텐데, 느낌이 휘발되지 않도록 다음 주차를 위해 기록해둡니다. DFS의 재귀가 for와 if의 합성으로 자기 자신을 다시 명령하는 방법으로 이루어진다면, BFS는 queue라는 list의 원소를 태우며 작동하는 while문의 끝에 새 땔감을 추가하는 방식으로 이루어진다. DFS는 재귀 사이클보다 우선적으로 주어진 if문에 의해 주어진 목표를 만족함을 감지하면 반복을 마치고, BFS는 while queue문이 할일을 다 끝내서 결과적으로 헛돌면서 재료만 태우다가 queue가 빈 리스트가 되면 반복을 마친다. DFS는 컴퓨터가 코드를 위에서부터 차례대로 실행하는 특성상 하..