11866 요세푸스 출력 형식 보다가 조금 더 공부하게 된 건.
https://www.delftstack.com/ko/howto/python/list-without-brackets-python/
a = [1,2,3,4,5,6]
a_str = [str(elem) for elem in a]
print('<%s>'%(', '.join(a_str)))
→ <1, 2, 3, 4, 5, 6>
['a', 'b', 'c'] 같이 스트링으로 구성된 리스트일때
스트링.join(스트링 리스트) 쓰면 스트링 리스트를 합칠때 사이사이에 조인 앞에 있는 스트링을 넣어줌
예시 ''.join(['a', 'b', 'c']) → 'ab***c'
a = "".join(str(y))
a = result[1:-1]
print('<'+a+'>')
행렬을 곱하는 법을 알고있어야 일반항을 구할 수 있었다.
1629 곱셈 문제도 그렇고 이게 몇 년 만에 보는 수학들이었는지¨
.
.
사진이 좀 크지만,,,
잊고살았던 단위행렬
.
.
행렬제곱을 다 풀고 마지막에 시간초과가 났다.
# 지수를 나누면서 부분연산을 진행하는 재귀함수
def multi(b):
if b == 1:
return numbers
# b가 짝수면 제곱
if b % 2 == 0:
# return mul_matrix(multi(b // 2), multi(b // 2)) #시간초과 이유
val = multi(b // 2)
return mul_matrix(val, val)
# b가 홀수면 지수-1 하고 입력받은 행렬 한번 곱해주기 (A^3 = A^2 * A)
else:
return mul_matrix(multi(b - 1), numbers)
문제가 됐던 해당 코드 부분인데, b를 나눠주며 크기를 줄이는 과정에서
return mul_matrix(multi(b // 2), multi(b // 2))
부분이 문제였다(사진참고)
그래서
val = multi(b // 2)
return mul_matrix(val, val)
으로 b//2값은 따로 val에 저장해서 그 값을 불러오는 식으로 시간문제를 해결했다
도와준 원종/종호오빠 매우 감사감사
힙 구조에 대해 이야기한 메모
힙을 leftheap, rightheap 2개로 나눠서 해결하는 풀이가 있었다.
최소 높이인 1을 기준으로 자르고,
그 다음 또 높이가 다른 곳을 기준으로 반 자르고... 이렇게 반복하다가
핵심은 3, 4번째의 직사각형 크기를 어떻게 계산해낼지 찾는게 핵심이었던 문제이다.
2021.11.16
문제를 어떻게 풀지 구상을 다 하고, 정답이 그런 풀이과정이 맞았음에도 불구하고 왜 코드로 구현하는게 어려울까 생각해본 결과 내가 프로그래밍 언어에 있어서 기초적인 문법에 공백이 있어서라는 것을 알게되었다.
기본 문법 공백을 채우고나면 훨씬 코드구현에 익숙해질 수 있을 것 같다.
내일은 오늘보다 두 번 더 앉아 버티는 것을 목표로 공부해야지.