오늘 일단 2주차 시험인데 개망... 역시 1주차 잘보면 그냥~ 기고만장 해져갖고 지금 약간 분한 상태이긴 한데에... 어찌 됬든 이제 공부 방향을 조금 바꿔서 해봐야 할 것 같으당
앞으로 해 봐야 할 것
1. 문제 풀이 시간 정해놓기
2. 난이도 (중) 문제를 많이 풀어보기
3. 적어도 10개는 풀어보자..
짧게라도 빡 집중하는 것을 목표로 하면 좋을 것 같으다앙.
시험 다시 좀 비교해보면
import sys
munja = str(sys.stdin.readline().strip())
bomb = str(sys.stdin.readline().strip())
tmp = []
#.join이 기억이 안나서 직접 만든 function
# list to string으로 바꿔주는 것
def join(sample):
tmp = ''
for i in range(len(sample)):
tmp += sample[i]
return tmp
for item in munja:
tmp += item
try:
if join(tmp[-len(bomb):]) == bomb:
for _ in range(len(bomb)):
tmp.pop()
except:
pass
if len(tmp) == 0:
print('FRULA')
else:
print(join(tmp))
이게 솔직히 말해서 sys나 input이 물론 아주 중요할 때가 있긴한데! 그냥 그게 꼭 중요하다기보다 list를 언제 쓸지 string을 언제 deque를 언제 쓸 지가 훨씬 중요한 것 같다.
자 이제 좀 고친 아래 것이 좋은 것 같은데 이유를 한번 살펴보자
munja = str(input().strip())
bomb = str(input().strip())
#리스트 사용
tmp = []
#문자열 사용
for item in munja:
# 리스트에 문자 넣어
tmp.append(item)
try:
if ''.join(tmp[-len(bomb):]) == bomb:
for _ in range(len(bomb)):
tmp.pop()
except:
pass
if len(tmp) == 0:
print('FRULA')
else:
print(''.join(tmp))
일단 피드백을 받은게 mutable이랑 immutable로 하는데 재귀를 썼을 때
이때 immutable을 쓴다면 메모리에 문제가 갈 수 있다는 설명을 받았다.
그래서 최대한 return으로 반환하지 않게끔 ? 하는 게 좋을 것 같다는 생각..
그래서 copy 를 했을 때 숫자 문자열 튜플을 copy 한 다음 바꿔도 딱히 뭐가 없지만
리스트는 같은 메모리에 저장되기 때문에 copy를 제대로 할려면... a = b[:]
이런식으로 해주는 구먼.. 이걸 shallow copy 라고 하고 더 나아가 리스트 안에 있는 객체들까지 싹다 새로 지정을 해주고 그런거는 deepcopy
어찌되었든 Moo게임을 다시 보자
#input 받기
n = int(input())
# 초기조건생각하기
standard = 'moo'
def check_moo(N, depth, before_length):
# 다음 길이 찾기
next_length = before_length * 2 + (depth+3)
# 길이가 3보다 작거나 같아
if N<=3:
return standard[N-1]
# 1블럭 , 2블럭 , 3블럭 나누기/ 4 블럭
# 4블럭
if N > next_length:
check_moo(N, depth+1, next_length)
else:
#2블럭
if before_length< N and N <=before_length + (depth + 3):
if N-before_length ==1:
print('m')
return
else:
print('o')
return
#3블럭
else:
check_moo(N - (depth+3+before_length) ,1,3)
check_moo(n,1,3)
여기서 #1블럭이 어딨지 ? 라는 생각... 하 이게 머리가... 너무 안돈다.. 좀 재귀랑 분할탐색 문제는 심심할 때 더 풀어봐야겠다는 생각을 하는 중..