본문 바로가기
[백준][파이썬] 1593 문자 해독 [핵심] 순열 내장함수나, 리스트에 모든 순열을 저장하게 되면 메모리 초과가 발생한다. 아스키코드를 활용 import sys n,m = map(int,sys.stdin.readline().split()) g = input() s = input() glit =[0]*52 slit =[0]*52 for i in range(n): #glit에 알파벳에 맞게 숫자 카운팅 if ord("a") 2020. 3. 10.
[백준][파이썬] #10870 피보나치수 5 (재귀함수 활용) [핵심] 다른 방법으로도 더 간단하게 구할 수 있다. 하지만, 재귀함수를 연습하기 위하여 재귀함수로 코드를 작성했다. 재귀함수 코드를 짤때 중요한점은 특정 변수가 되었을 때 재귀함수가 멈추고 출력 혹은 다른 실행이 되어야 하는것이다. While문과의 비슷한점이 조금은 있는것 같다. 쉬운 예제로 재귀함수를 푸는 연습을 해야 나중에 어려운문제를 재귀함수로 쉽게 풀 수 있을것같다. num = int(input()) lit = [0,1] def recur(time,index): cnt = index number = lit[-1]+lit[-2] lit.append(number) if time-2 == cnt: print(lit[-1]) else: recur(num,cnt+1) if num == 0: print(0.. 2020. 3. 10.
[백준] #15650 N과 M(2) [핵심] 메모리를 생각하는 것이 핵심이다. 내장된 모듈을 활용하여 순열이나 조합을 리스트에 저장하면 대부분의 경우 메모리 초과가 된다. 다음와 같이 재귀함수를 활용하여 바로바로 출력을 하는 연습을 하자! (메모리가 작을 것이다.) import sys N,M = map(int,sys.stdin.readline().split()) hi=[False]*N test = [] def solve(depth,idx,N,M): if depth == M: print(test) for i in range(idx,N): if hi[i] == 0: test.append(i+1) hi[i] = True solve(depth+1,i+1,N,M) hi[i] = False test.pop() solve(0,0,N,M) 2020. 3. 10.
[백준] #2869번 달팽이는 올라가고 싶다 # while문을 이용하여 풀면 시간초과 난다 # V-b를 통하여 밤이되기전 낮에 완주를 하는 경우를 생각해줘야 한다. import sys a,b,v = map(int,sys.stdin.readline().split()) tem = (v-b) / (a-b) if tem == int(tem): print(int(tem)) else: print(int(tem)+1) 2020. 3. 10.