전체 글(44)
-
[백준] 1260번 DFS와 BFS: Python
문제 해결 포인트 DFS와 BFS의 기본 개념을 알고 있어야 합니다. DFS 1. 깊이 우선 탐색입니다. 2. 어느 한 방향(branch)으로 깊게 탐색하다가 해를 찾지 못하면 부모 노드로 돌아와서 다음 노드를 탐색합니다. 3. 따라서 재귀함수와 스택으로 구현해야 합니다. 4. 현재 방향의 노드들만을 저장하기 때문에 메모리 관리 측면에서는 효율적입니다. 5. 그러나 목표 노드가 너무 깊이 있으면 해를 구하는데 시간이 오래 걸립니다. 6. 한 방향에서 해를 찾으면 바로 빠져나오기 때문에, 다른 방향으로 구하는 해를 검증할 수가 없습니다. 따라서 최적의 해가 아닐 수도 있습니다. BFS 1. 너비 우선 탐색입니다. 2. 노드와 인접한 노드들부터 차례대로 탐색합니다. 3. 따라서 반복문과 큐로 구현해야 합니다..
2023.02.01 -
[백준] 18111번 마인크래프트: Python
문제 해결 포인트 모두에게 익숙할 마인크래프트입니다. 높이는 0~256까지 가능합니다. 가로와 세로의 최대 길이는 500입니다. 이 정도의 사이즈라면 높이를 0, 1, 2... 256까지 차근차근 높여보면서, 각 높이의 최소 시간을 계산해보면 될 것입니다. 단, 최소 시간이 겹친다면 높이가 높은 쪽을 골라야 합니다. 즉, 모든 경우에 대해 빠짐없이 검사해보는 브루트포스 방법을 사용해야합니다. 코드 작성 from sys import stdin N, M, B = map(int, stdin.readline().split()) heights = [] for _ in range(N): heights += list(map(int, stdin.readline().split())) heights.sort(reverse..
2023.02.01 -
[백준] 2805번 나무 자르기: Python
문제 해결 포인트 높이가 몇일 때 나무의 잘린 부분의 합이 M이 되는지 계산해야되는 문제입니다. 높이를 1씩 올리면서 언제쯤 최적화가 되는지 확인할 수도 있지만, 주어진 숫자가 너무 크기 때문에 시간초과가 나게 됩니다. 높이를 1씩 올린다는 아이디어는 탐색과 관련이 있습니다. 또한 나무들의 최소 높이와 최대 높이가 정해져 있기 때문에 높이를 무한정 높이는게 아니라 정해진 범위 내에서 탐색한다는 사실을 알 수 있습니다. 바로 여기에서 이분탐색의 아이디어를 떠올려야 합니다. 이분탐색 시간복잡도: O(logn) 범위를 절반씩 줄이면서 탐색합니다. 또한 리스트 내의 자료들이 정렬되어있어야 탐색이 가능합니다. 오름차순으로 자료가 정렬되어 있다고 가정할 때, 1. 찾아야되는 자료가 mid와 같은 지 확인합니다. m..
2023.02.01 -
[React] React 앱을 배포하기: Netlify
서론 개발한 앱을 PC에서 작동시킬수도 있지만, 만약 이 앱이 24시간 365일 작동해야 한다면 컴퓨터의 전원이 절대로 꺼지면 안될 것입니다. 또한 앱의 이용자가 기하급수적으로 늘어나면 컴퓨터의 CPU, 램, 저장장치 등을 추가해야 할 수도 있습니다. 이러한 환경을 개인이 구축하기에는 다소 힘들기 때문에, 앱을 제 3자에게 제공하여 사람들이 언제든지 자유롭게 앱을 사용할 수 있도록 배포할 수도 있습니다. React 앱을 배포하는 방법은 다음과 같습니다. 1. Github pages Github에서 기본으로 제공하는 서비스입니다. 2. Netlify 정적 웹사이트를 배포하는 서비스입니다. 3. Firebase 정적 웹사이트를 배포하는 서비스입니다. 이 문서에서는 Netlify로 React 앱을 배포하는 방..
2023.01.31 -
[Django] Django로 만든 앱을 배포하기: Pythonanywhere
서론 개발한 앱을 PC에서 작동시킬수도 있지만, 만약 이 앱이 24시간 365일 작동해야 한다면 컴퓨터의 전원이 절대로 꺼지면 안될 것입니다. 또한 앱의 이용자가 기하급수적으로 늘어나면 컴퓨터의 CPU, 램, 저장장치 등을 추가해야 할 수도 있습니다. 이러한 환경을 개인이 구축하기에는 다소 힘들기 때문에, 앱을 제 3자에게 제공하여 사람들이 언제든지 자유롭게 앱을 사용할 수 있도록 배포할 수도 있습니다. Django 앱을 배포하는 방법은 다음과 같습니다. 1. AWS로 배포하기 : EC2 인스턴스로 배포할 수 있습니다. 또한 Django 앱을 Gunicorn(WSGI)과 연결하고 웹서버인 Nginx를 또 연결해야 합니다. 2. Pythonanywhere로 배포하기 : 소규모 앱에 적합하며 무료입니다. 배..
2023.01.31 -
BMW 7 Series는 드디어 만년 2인자 자리를 벗어날 수 있을까?(feat. BMW X7) - 인테리어 편
저번에 이어서 실내를 살펴보도록 하겠습니다. 실내는 덜 파격적이라고 결론부터 말씀드릴 수 있을 것 같습니다. 일단 가장 두드러지는 특징으로는 커다란 디스플레이 패널이 눈에 띕니다. 고급 인포테인먼트 시스템의 상징격이 되어버린 커브드 디스플레이이며 12.3인치디스플레이와 14.9인치 디스플레이의 조합으로 이루어집니다. 공조기 조작도 8세대 iDrive로 넘어오면서 스크린에 통합되어 공조기를 위한 물리버튼 역시사려졌습니다. 분명히 수평적이고 안정감을 주는 디자인은 맞습니다만…. 저는 개인적으로 좋아하는 구성은 아닙니다. 대쉬보드 디자인이 실내에서 매우 큰 특징이라고 생각하는데, 요즘 차들은 이렇게 디스플레이 두개로 때운다는느낌을 지울 수가 없습니다. 미래지향적인 것은 맞습니다만 이것도 요즘은 식상하게 느껴집..
2022.11.02