Today Sangmin Learned
[Python] BOJ(백준) 2470번 - 두 용액
CS/알고리즘 2021. 7. 27. 21:09

링크 https://www.acmicpc.net/problem/2470 난이도(solved.ac 참고) 골드5 풀이 이분 탐색 또는 투포인터로 풀 수 있는 문제인데 나는 투포인터로 풀었다. 둘 중에 어느 것으로 풀어도 상관 없을 것 같긴 하다. 이분 탐색을 잘 썼다면 그쪽 코드가 좀더 간결했을 것이다. 이 문제의 핵심은 부분합을 계속 구해가면서, 기존에 있던 부분합의 절댓값보다 작은 경우(즉 0에 가까운 경우) 부분합에 들어가는 요소와 그 합을 바꿔주는 방식으로 풀어야 한다는 점이다. 우선 배열의 첫번째와 마지막 값, 그리고 그 두개를 더한 값을 ans라는 리스트에 넣었다. 반복문을 도는데, 당연히 시작점과 끝점이 같으면 안되므로 그부분은 반복문에서 먼저 넣어준다. 현재 ans에는 (첫째값, 마지막값, ..

[Python] BOJ(백준) 2110번 - 공유기 설치
CS/알고리즘 2021. 7. 26. 17:12

링크 https://www.acmicpc.net/problem/2110 난이도(solved.ac 참고) 실버1 풀이 이분 탐색 문제를 풀면서, start와 end를 어떻게 정해야할지가 중요한 부분이라고 생각하게 되었다. 여기서 start와 end는 집의 위치가 아니라 간격의 최소값 최대값으로 하였다. 간격이 같아질 때까지 반복하는데, 일단 기본적으로 맨 앞 집에는 설치를 한다고 가정하여 count를 1부터로 놓고 시작하였다. 그리고 기준값(candidate)을 첫번째 집으로 놓고 시작했다. for문을 돌면서(첫번째 집 이후부터 집을 다 돌면서), candidate + mid의 값, 그러니까 기준값에서 중간값을 더한 값보다 그 다음 집이 더 멀다면? 그러면 이 집은 추가를 해줘야한다. 왜냐면 .. 최대거리..

article thumbnail
[Next.js] CSS 모듈 적용, 글로벌 스타일링
Web/Next.js 2021. 7. 23. 11:50

Next.js에서는 전역적으로 적용하는 글로벌 스타일링을 할 수 있다. 기본적으로 TypeScript 템플릿을 가진 create next app을 하면 있긴 하지만, Next.js가 가진 속성이므로 한번 포스팅해보려고 한다. 우선 CSS 모듈을 적용시키는 것부터 보고, 전역적으로 적용시키는 글로벌 스타일링을 보자. layout.tsx import styles from "./layout.module.css"; import { FC } from "react"; interface Props { children: any; } const Layout: FC = ({ children }) => { return {children}; }; export default Layout; layout.module.css .co..

article thumbnail
[Django] Template 상속, 앱 분리, Static
Django 2021. 7. 22. 18:21

1. Template 상속 이번에는 base.html을 사용하여 템플릿 상속을 해볼 것이다. base.html에는 Navbar가 들어가고, 다른 일반 페이지에서는 extends base.html을 통해 Navbar를 받아온 뒤에 페이지별로 필요한 정보만 보이게끔 하여 코드 수를 줄일 것이다. 1. crud2/crud2 폴더에 templates 폴더를 만들고 그 안에 base.html을 넣는다. 부트스트랩으로부터 가져온 Navbar이다. Navbar Home Link Dropdown Action Another action Something else here Disabled Search {% block content %} {% endblock %} {% block content %}와 {% endblock ..

article thumbnail
[Django] CRUD - U, D
Django 2021. 7. 22. 11:33

1. Update 이번에는 글을 수정하는 update 기능을 구현해 볼 것이다. Create와 마찬가지이다. 1. update.html을 만들고 crud2/urls.py와 blog/views.py에 연결한다. 2. update를 위해서는 어떤 정보가 필요할까? 바로, 그 수정될 글의 id와 수정하기 전 내용이다. 이전에 detail 페이지를 만들 때 의 형태로 path converter를 사용했다. 우선 detail.html에서 update로 갈 수 있게끔 수정해준다. {{ blog.title }} {{ blog.pub_date }} {{ blog.body }} 수정하기 돌아가기 3. urls.py에 update에 관한 내용을 추가해준다. path('update/', update, name='update..

article thumbnail
[Python] BOJ(백준) 2667번 - 단지 번호 붙이기
CS/알고리즘 2021. 7. 21. 17:49

링크 https://www.acmicpc.net/problem/2667 난이도(solved.ac 참고) 실버1 풀이 음.. 일반적인 BFS문제라고 생각한다. 전체에 대한 for문을 돌면서 1인 경우에 bfs를 시작했는데, 여러번 반복하지 않기 위해 while문 내부에서 해당 값을 0으로 바꿔버렸다. 이렇게 되면 한번 BFS가 끝났을 때 그 부분은 전부 0으로 바뀌면서 1을 찾는 for문 조건에 충족되지 않게 된다. BFS 함수 내부에서는, 미로 찾을 때처럼 nx, ny로 좌표를 통해서.. (방문하지 않았고 값이 1인 경우)를 찾아 큐에 더해주는 방식으로 진행했다. bfs 함수를 실행한 결과로 나온 count를 ans_list라는 리스트에 넣었고, 그 리스트의 길이와 가장 작은 값부터 순서대로 출력하게끔 ..

article thumbnail
[Django] CRUD - R, C
Django 2021. 7. 21. 14:42

1. Read 1. blog 폴더에 templates 폴더 생성하고 home.html 만들기 2. 이 새로 만든 home.html을 각각 crud2/blog/views.py와 crud2/crud2/urls.py에 연결해주기 from django.shortcuts import render from .models import Blog # Create your views here. def home(request): blog = Blog.objects.all() return render(request, 'home.html', {'blogs': blogs}) Blog 내부에 있는 모든 객체들을 blogs라는 변수에 담고, 그 blogs를 이 view에서 blogs라는 이름으로 사용한다는 뜻이다. from djan..

article thumbnail
[Django] Model & Admin
Django 2021. 7. 21. 13:47

1. 새로운 프로젝트 생성하기 (가상환경 켜고) (venv) sangminpark@Sangminui-MacBookPro-16 Django % django-admin startproject crud2 2. blog 앱 만들기 (venv) sangminpark@Sangminui-MacBookPro-16 Django % cd crud2 (venv) sangminpark@Sangminui-MacBookPro-16 crud2 % python manage.py startapp blog 3. crud2 폴더 내부 settings.py - INSTALLED_APPS에 'blog' 삽입하기, TIME_ZONE에 'Asia/Seoul'으로 바꿔주기 -> 후자를 하는 이유는, 기본적으로 시간이 KST에 맞춰져 있지 않기 때..

[Next.js] 사전 렌더링(Pre-rendering): Static Generation과 SSR
Web/Next.js 2021. 7. 21. 12:46

Next.js에서 사전 렌더링을 하는 방법은 크게 두 가지가 있다: Static Generation과 Server Side Rendering(SSR)이 그것이다. 1. Static Generation 유저의 요청(request)이 있기 전에 렌더링 대상이 되는 페이지를 사전에 렌더링해야되는 경우 사용한다. 보통 build time에 사전 렌더링을 해둔다. 1-1. 데이터가 없는 경우의 Static Generation 데이터가 없는 경우는, 서버로부터 fetch해 올 어떠한 데이터도 없기 때문에 Next.js에서는 build time에 HTML 형태로 사전 렌더링을 해둔다. function About() { return About } export default About 1-2. 데이터가 있는 경우의 St..

[Next.js] Next.js가 CRA에 비해 가진 장점
Web/Next.js 2021. 7. 21. 10:32

Next.js로 직접 프로젝트를 진행해보면서, CRA에 비해 어떤 장점을 갖고있는지 나열해보고자 한다. 생각날 때마다 업데이트 할 예정 1. pages 내부에 파일을 만들면 그게 곧 페이지로 연결이 된다. (Next 라우팅 시스템) /pages/about.tsx를 만들었다고 해 보자. 이 경우 기본 URL이 localhost:3000일 때 localhost:3000/about을 통해 바로 about 페이지로 이동할 수 있다. CRA에서는 App.tsx에서 전부 하나하나 import해온 뒤 불러와야 한다. 2. 코드 스플리팅을 기본으로 제공한다. 코드 스플리팅이란.. React를 사용해서 엄청나게 많은 컴포넌트를 가진 웹을 만들었을 때, 한꺼번에 전체를 다 불러오는 것이 아니라 특정 페이지에 들어갔을 때 ..