본문 바로가기

분류 전체보기

우연히 후원 시작 학교 동아리 방에 가는 길에 좋은 터가 있다 ATM 기기 앞인데 거기에 가끔 부스를 설치해놓고 뭔가를 한다.대부분 지나쳤는데 이번엔 유니세프다. 다른 길로 돌아서 동방에 빨리 갈까 생각했는데 부스 앞을 지나갔다. 인적도 드물어서 유니세프 옷 입고 있는 사람이 나한테 말을 걸었다. 무슨 납작한 초코바 같은걸 보여주면서 이게 얼마 같냐고 물어봤다. 그래서 속으로 10원? 20원? 하다가 100원이라고 대답했다. 그분은 600원이라고 말해줬다. 내가 비싸다고 대답했다. 땅콩이랑 뭘 섞어서 만든 과자인데 이게 아프리카 사람들의 식량으로 공급된다고 했다. 그밖에도 정수 알약도 있었다. 어쨌든 내 이름이랑 계좌번호 쓰고 월 1만원 후원하는 서류를 작성했다. 내가 편의점 안가고 뭐 안사먹으면 한달에 만원 정도는 낼 ..
순환의 개념과 기본 예제 1 수도(pseudo) 코드로 적음 자기 자신을 호출하는 함수def func ():print("Hello") //Hello가 무한히 출력된다.func() 무한 루프에 빠지지 않기 위해서 recursion (재귀)를 벗어나는 base 조건이 필요하다k=4def func(k):if k
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..
Programmers Level 5 2 x n 타일링 def tiling(n): answer = 0 a=1 b=2 if n==1:return 1 if n==2:return 2 while n>2: answer = a+b a,b=b,answer n-=1 return answer%100000 #생각해보니 100000으로 나누면 자리수가 무조건 5 이하.# 아래는 테스트로 출력해 보기 위한 코드입니다.print(tiling(271))
Programmers Level 5 124나라의 숫자 def change124(n): answer = "" i=0 while n>0: i = n%3 n //= 3 if i==0: n-=1 answer = '412'[i] + answer return answer # 아래는 테스트로 출력해 보기 위한 코드입니다.print(change124(10))