[TIL] [2023.05.01]백준 문제풀이: 9251,11047,12865

Pyotato·2023년 5월 1일
0

[TIL]

목록 보기
13/30

✍️오늘 공부한 내용


📋새로 배우게 된 내용

  1. 배열의 아이템을 가져올 때 javascript에서는 spread연산자...를 사용하는데 파이썬에서도 같은 기능을 할 수 있는 *가 있다!
function multiply(a, b) {
    return a * b;
}
const numbers = [3, 5];
console.log(multiply(...numbers));
// Output: 15
def multiply(a, b):
    return a * b
numbers = [3, 5]
print(multiply(*numbers))
# Output: 15
  • dict도 **로 가능
test_obj = { 'foo': 'bar' }
print({ **test_obj, 'foo2': 'bar2' })
# Output: {'foo': 'bar', 'foo2': 'bar2'}
  1. 배열을 뒤집고 싶은데 for나 [::-1] 보다 빨리 처리 가능한 방법이 어떤게 있을까? 🤔 하다가 찾은 reversed() 함수! 간단하게 배열을 뒤집는 방식을 비교하면 아래와 같다.
    reverse 비교 table

🤯어려웠던 점

  1. dp(동적 프로그래밍) 문제를 푸는 방식은 크게 상향식(bottom up)과 하항식(top up)방식이 있는데, 구현 방식을 보면 상향식은 for문 반복문을 활용해서 iterative방식이고, 하향식은 재귀적(recursively)으로 접근하는데, vscode로 문제를 풀면 답이 나오는데..백준에서 문제를 제출하면 시간초과가 뜬다.🥹

😸어려움을 해결한 방법

  • 사실 문제를 해결했다고 보기는 어렵지만, 재귀호출이 깊이가 너무 깊어져서 발생한 문제같다. sys.setrecursionlimit(10**6)를 해도 안되고..시간복잡도를 줄일 수 있는 방법을 찾다보니까 파이썬 내장함수 중에서도 시간복잡도를 높인 내장함수를 사용했나? 했더니 그것도 아님. 결국 재귀로는 풀기 어려운 문제같다고 결론내렸는데..조금 아쉽다.

🤔아쉬웠던 점

  • 상향식 하향식으로 다 풀이가능한 건 아닐 수도 있다고 생각이 들었다. 풀이는 가능하지만 효율성을 따지면 둘 중 하나가 나은 경우가 있고, 백준 채점 기준에 부합하는 문제풀이도 존재하는 것 같았다. 그래도 따로 vscode에서 작동하게끔 코드를 짜고, 거기서 작동되는 걸로 어느정도 만족하기로 했다.

😝느낀점

  • 며칠 전 자바스크립트로 dp문제 풀어보고 파이썬으로도 구현해보는 걸 연습했는데, 오랜만에 자바스크립트 코드를 짜니까 반가웠다.
  • 파이썬도 친숙하게 느껴지도록 더 연습해봐야겠다고 생각이 들었다. 그리고 자바스크립트도 감 잃지 않게 나는 프론트엔드쪽 희망이라 자바스크립트 필수지만 공부를 다시 해야겠다고 생각이 들었다.

👊다짐

  • 자바스크립트로 문제풀이해보자. 그리고 아직 완독하지 못했던 모던 자바스크립트 딥다이브도 읽자🦎

🚀오늘의 한줄평

  • 하루에 4시간씩 자도 해야할 일들을 못한 거 같다. nextjs 공부도 하고 컴퓨터 시스템 책도 읽어야하고, 문제도 생각보다 진도를 나가지 못했는데 시간을 효율적으로 사용하는 방법에 대해 다시 고민해야할 거 같다. 아니면 내가 하루에 너무 많은 걸 하려는 욕심인가

📚 References

profile
https://pyotato-dev.tistory.com/ 로 이사중 🚚💨🚛💨🚚💨

0개의 댓글