2023.03.16 TIL

hodeethelion·2023년 3월 16일
0

SW Intense Academy

목록 보기
4/12
post-thumbnail

오늘 일단 2주차 시험인데 개망... 역시 1주차 잘보면 그냥~ 기고만장 해져갖고 지금 약간 분한 상태이긴 한데에... 어찌 됬든 이제 공부 방향을 조금 바꿔서 해봐야 할 것 같으당

앞으로 해 봐야 할 것
1. 문제 풀이 시간 정해놓기
2. 난이도 (중) 문제를 많이 풀어보기
3. 적어도 10개는 풀어보자..

짧게라도 빡 집중하는 것을 목표로 하면 좋을 것 같으다앙.

시험 다시 좀 비교해보면

백준 9925

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))

백준5904 Moo게임

일단 피드백을 받은게 mutable이랑 immutable로 하는데 재귀를 썼을 때

  • immutable: 숫자, 문자열, 튜플
  • mutable: 리스트, 딕셔너리, ndarray

이때 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블럭이 어딨지 ? 라는 생각... 하 이게 머리가... 너무 안돈다.. 좀 재귀랑 분할탐색 문제는 심심할 때 더 풀어봐야겠다는 생각을 하는 중..

profile
가슴을 따라가자

0개의 댓글

관련 채용 정보