본문 바로가기

Python

프로그래머스 프린터 보기에는 엄청 간단해보이는데 무슨 조건을 줘야하는지 몰랐고 그 조건마다 뭘 실행해야 할지도 헷갈렸다. 일단 while문이 아닌 for문으로 어떻게 해보려고 해서 헤맸다. 일단 priorities 배열에 있는 index가 location인 놈을 -1로 만든다.이 놈이 몇번째로 나오는 지가 중요해서 다른 값과 구분하기 위해서다.원래 있던 놈은 num에 넣고 location에 있는 놈을 삭제하고 그 자리에 -1을 insert로 넣는다. 첫번째 if문 : 맨 처음에 -1이 있는데 max가 아닌 경우 출력을 해주면 안되고 뒤로 보내야한다.elif문 : 맨 처음에 -1이 있고 그 값이 배열의 최대값보다 크거나 같으면 1번만에 출력된 것이므로 1을 return한다. while문은 원하는 값이 출력될 때 까지 True..
ImportError: cannot import name 'MongoClient' 너와 포맷까지 생각했어 파이참 개발환경에서 이런 에러가 났다. 설마하고 idle 켜서 해봐도 같은 에러가 났다.수업 시간에 발버둥을 쳐도 소용이 없었다. 혹시 scrapy, tensorflow 실습을 위해 만든 가상환경에 설정이 반영되지 않아서 그런가 생각했다.cmd창에서 Python34>Scripts에도 들어가보고, AppData에도 들어가봤는데 소용 없었다. Stackoverflow, 지식인에 가봐도 소용 없었다. 결론은 pymongo.py라는 파일을 지우면 되는 것이다... 키워드와도 같은 pymongo는 함부로 입에 담으면 안되는 것이었다. 난 왜 항상 이런 쓸데 없는 곳에서 막히나 모르겠다. ImportError: cannot import name 'MongoClient'
IOError: [Errno 22] invalid mode ('wb') or filename: : > < " / \ | ? * 등의 예약어는 파일명이 될 수 없음.. import scrapy class JobSpider(scrapy.Spider): name = "jobspider" allowed_domains = ["jobkorea.co.kr"] start_urls=[ "http://www.jobkorea.co.kr/starter/?schLocal=&schPart=10016&schMajor=&schEduLevel=&schWork=&schCType=&isSaved=1&LinkGubun=0&LinkNo=0&Page=1&schType=0&schGid=0&schOrderBy=0&schTxt=" #"http://www.jobkorea.co.kr" ] def parse(self, response): file..
초간단 python BFS Breadth First Search 너비 우선 탐색 graph={ 1:[2,3], 2:[1,4,5,7], 3:[1,5,9], 4:[2,6], 5:[2,3,7,8], 6:[4], 7:[5,2], 8:[5], 9:[3], } def BFS(graph,root): visited=[] queue=[root] while queue:#while queue is not empty n = queue.pop(0) if n not in visited:#if n is not in visited list. visited.append(n)#put the n to the visited list. for i in graph[n]:#the numbers i connected with n if i not in visited:#i is not in visited list. queue.a..
Programmers Level 8 올바른 괄호 (카탈린 수 사용) import math as m def parenthesisCase(n): return m.factorial(2*n) // (m.factorial(n+1) * m.factorial(n)) #카탈란수 # 실행을 위한 테스트코드입니다. if parenthesisCase(3) == 5: print("parenthesisCase(3)이 정상 동작합니다. 제출을 눌러서 다른 경우에도 정답인지 확인해 보세요.") else: print("parenthesisCase(3)이 정상 동작하지 않습니다.")
Programmers Level 8 선입선출 스케줄링 def getCoreNumber(n, cores): time = 0 while n>0: for i in range(0,len(cores)): if time%cores[i]==0: #현재 시간 나누기 처리 시간의 나머지 n-=1 if n==0: return i+1 time+=1 print(getCoreNumber(6, [1, 2, 3])) print(getCoreNumber(22,[1,2,3,4,5]))
Programmers Level 6 3xN 타일링 def tiling(n): if n%2==1:return False else: dp=[[0]*3 for i in range(10000)] dp[2][0]=dp[2][1]=dp[2][2]=1 for i in range(4,n+1,2): dp[i][0] = 2 * dp[i-2][0] + dp[i-2][1] + dp[i-2][2] dp[i][1] = dp[i-2][0] + 2 * dp[i-2][1] + dp[i-2][2] dp[i][2] = dp[i-2][0] + dp[i-2][1] + dp[i-2][2] return (dp[i][0] + dp[i][1] + dp[i][2])%100000 # 아래는 테스트로 출력해 보기 위한 코드입니다. print(tiling(119))
Programmers Level 5 줄 서는 방법 import math as m def setAlign(n,k): answer = [] #답 리스트 num = [i for i in range(1, n + 1)] #[1...n] 리스트 생성 while num: #리스트가 빌 때까지 n-=1 #자리수 하나씩 감소 fac = m.factorial(n) answer.append(num.pop((k-1)//fac)) #답 리스트에 [1...n] 리스트에 있는 숫자를 팝해서 붙임. (k-1)//(n!//n). k번째 수의 맨 앞 자리 수는 (k-1)//(n-1)! + 1. (k-1)//(n-1)!을 인덱스 삼아 num에서 값을 찾으면 +1 한 결과가 남. 왜냐하면 num[i]=i+1 이므로. k%=fac #다음에 구할 순서는 기존의 순서 k번째를 1만큼 감소한 n..