✍️오늘 공부한 내용
📋새로 배우게 된 내용
- 배열의 아이템을 가져올 때 javascript에서는 spread연산자
...
를 사용하는데 파이썬에서도 같은 기능을 할 수 있는 *
가 있다!
function multiply(a, b) {
return a * b;
}
const numbers = [3, 5];
console.log(multiply(...numbers));
def multiply(a, b):
return a * b
numbers = [3, 5]
print(multiply(*numbers))
test_obj = { 'foo': 'bar' }
print({ **test_obj, 'foo2': 'bar2' })
- 배열을 뒤집고 싶은데 for나 [::-1] 보다 빨리 처리 가능한 방법이 어떤게 있을까? 🤔 하다가 찾은
reversed()
함수! 간단하게 배열을 뒤집는 방식을 비교하면 아래와 같다.
🤯어려웠던 점
- dp(동적 프로그래밍) 문제를 푸는 방식은 크게 상향식(bottom up)과 하항식(top up)방식이 있는데, 구현 방식을 보면 상향식은 for문 반복문을 활용해서 iterative방식이고, 하향식은 재귀적(recursively)으로 접근하는데, vscode로 문제를 풀면 답이 나오는데..백준에서 문제를 제출하면 시간초과가 뜬다.🥹
😸어려움을 해결한 방법
- 사실 문제를 해결했다고 보기는 어렵지만, 재귀호출이 깊이가 너무 깊어져서 발생한 문제같다.
sys.setrecursionlimit(10**6)
를 해도 안되고..시간복잡도를 줄일 수 있는 방법을 찾다보니까 파이썬 내장함수 중에서도 시간복잡도를 높인 내장함수를 사용했나? 했더니 그것도 아님. 결국 재귀로는 풀기 어려운 문제같다고 결론내렸는데..조금 아쉽다.
🤔아쉬웠던 점
- 상향식 하향식으로 다 풀이가능한 건 아닐 수도 있다고 생각이 들었다. 풀이는 가능하지만 효율성을 따지면 둘 중 하나가 나은 경우가 있고, 백준 채점 기준에 부합하는 문제풀이도 존재하는 것 같았다. 그래도 따로 vscode에서 작동하게끔 코드를 짜고, 거기서 작동되는 걸로 어느정도 만족하기로 했다.
😝느낀점
- 며칠 전 자바스크립트로 dp문제 풀어보고 파이썬으로도 구현해보는 걸 연습했는데, 오랜만에 자바스크립트 코드를 짜니까 반가웠다.
- 파이썬도 친숙하게 느껴지도록 더 연습해봐야겠다고 생각이 들었다. 그리고 자바스크립트도 감 잃지 않게
나는 프론트엔드쪽 희망이라 자바스크립트 필수지만 공부를 다시 해야겠다고 생각이 들었다.
👊다짐
- 자바스크립트로 문제풀이해보자. 그리고 아직 완독하지 못했던 모던 자바스크립트 딥다이브도 읽자🦎
🚀오늘의 한줄평
- 하루에 4시간씩 자도 해야할 일들을 못한 거 같다. nextjs 공부도 하고 컴퓨터 시스템 책도 읽어야하고, 문제도 생각보다 진도를 나가지 못했는데 시간을 효율적으로 사용하는 방법에 대해 다시 고민해야할 거 같다.
아니면 내가 하루에 너무 많은 걸 하려는 욕심인가
📚 References