We will find a way, we always have.

-interstellar

전체 글 256

[백준] 17132번: 두더지가 정보섬에 올라온 이유 - 파이썬

🔈 문제 두더지가 정보섬에 올라왔다! 두더지는 정보섬 지하에 여러 채의 자택을 소유하고 있다. 두더지는 집 사이를 오가는 걸 좋아한다. 정보섬에는 총 N개의 두더지 집이 있으며 이 집들은 N-1개의 길로 연결되어 있다. 임의의 집에서 또 다른 집으로 가는 경로는 항상 유일하게 하나만 존재한다. 즉, 두더지 집들은 트리 형태로 모두 연결되어 있다. 어떤 길을 지날 때, 두더지는 W만큼의 만족도를 얻는다. 어느 날, 아래의 그림과 같은 집을 가진 두더지는 집1에서 집4로 이동했다. 이때 거치게 되는 집은 (1 → 2 → 3 → 4)이다. 두더지는 한 번 이동할 때마다, 이동경로에 포함되는 만족도들 중에서 가장 최소인 만족도를 얻는다. 즉, (1 → 4)의 경우에는 만족도를 2만큼, (6 → 2)의 경우에는 ..

[원클릭 슴리] 원클릭 스밍리스트 제작 가이드

원클릭 스밍리스트란? 음원이 발매되면 멜론이나 지니같은 스트리밍 사이트에 차트인 시키기 위해 스밍을 하게 되는데 이때 정한 음원 순서들을 스밍리스트(줄여서 슴리)라고 한다. 한시간에 한번 집계되기에 스밍리스트의 총 시간은 약 한시간이고 타이틀 곡은 누락방지를 위해 3~4번 포함되어 있다. 정해진 순서대로 곡을 담는건 조금은 번거롭기 때문에 한번의 클릭으로 스밍리스트 순서대로 음원을 담을 수 있는 것이 원클릭 스밍리스트이다. 스밍리스트를 만들기 위해 필요한 것은 고유한 음원 id (songId)이다. 같은 음원이라도 사이트마다 songId가 다르기 때문에 만들고자 하는 사이트에 대한 songId를 찾아야 한다. SongId 찾는 방법 songId는 URL에 나와 있다. 원하는 곡 정보에 들어가면 songI..

Ploject 2023.08.03

[백준] 2637번: 장난감 조립 - 파이썬

🔈 문제 우리는 어떤 장난감을 여러 가지 부품으로 조립하여 만들려고 한다. 이 장난감을 만드는데는 기본 부품과 그 기본 부품으로 조립하여 만든 중간 부품이 사용된다. 기본 부품은 다른 부품을 사용하여 조립될 수 없는 부품이다. 중간 부품은 또 다른 중간 부품이나 기본 부품을 이용하여 만들어지는 부품이다. 예를 들어보자. 기본 부품으로서 1, 2, 3, 4가 있다. 중간 부품 5는 2개의 기본 부품 1과 2개의 기본 부품 2로 만들어진다. 그리고 중간 부품 6은 2개의 중간 부품 5, 3개의 기본 부품 3과 4개의 기본 부품 4로 만들어진다. 마지막으로 장난감 완제품 7은 2개의 중간 부품 5, 3개의 중간 부품 6과 5개의 기본 부품 4로 만들어진다. 이런 경우에 장난감 완제품 7을 만드는데 필요한 기본..

서버리스 - Serverless

서버리스 서버리스(Serverless)는 서버가 없다고 생각할 수 있는데 사실 서버가 없는 건 아니다. 특정 작업을 수행하기 위해 컴퓨터를 혹은 가상머신에 서버를 설정하고, 이를 통해 처리하는 것이 아님을 의미한다. 정리하면 개발자가 서버를 관리할 필요없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델이다. 예를 들어 서버의 사용자가 늘어날 것을 기대하고 그에 맞는 용량의 서비스도 늘렸다면 사용자가 늘던 줄던 동일한 금액을 내야 한다. 이는 분명 손실을 가지고 온다. 반면에 서버리스 아키텍처에서는 동적으로 서버의 자원을 할당한다. 서버리스를 활용하면 운영체제 및 파일 시스템 관리, 보안 패치, 부하 분산, 용량 관리, 스케일링, 로깅, 모니터링 같은 일상적인 작업을 모두 클라..

Blah blah 2023.07.27

[리뷰] 처음부터 제대로 배우는 스프링 부트

한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다. 이번에 소개할 도서는 스프링 부트 입문 도서이다. 책은 빌드 도구와 언어 그리고 IDE 를 선택하는 것부터 시작한다. 그 다음 REST API, DB, 스프링 MVC, 애플리케이션 보안 및 배포에 대해 전반적으로 다루고 있다. 이전에 스프링 배우면서 재밌었던 부분은 @RequestMapping에서 HTTP 메서드 별로 다르게 매핑할 수 있도록 제공하는 애노테이션이였다. 같은 URI 여도 HTTP 메서드 마다 @GetMapping, @PostMapping 등을 지원하여 번잡한 코드를 줄이고 URI 도 깔끔하게 만들수 있다는 장점이 맘에 들었다. 이 도서에서도 이런 경험을 느낄 수 있도록 자세한 예시코드와 설명들이 포함되어 있다. 스프링을 처음부터 ..

Blah blah 2023.07.23

[네트워크] HTTP 응답코드

HTTP 응답 코드 HTTP 응답 코드는 클라이언트의 요청에 대한 서버에서 반환되는 코드를 말한다. 응답 코드를 통해서 요청 결과에 대한 정보를 알 수 있다. 응답 코드는 5개의 분류로 구분된다. 1xx (정보 전달) : 1로 시작하는 응답코드는 서버가 요청을 받았고, 클라이언트는 작업을 진행하라는 의미. HTTP/1.0 이후 거의 쓰이지 않는다. 2xx (성공) : 요청이 서버에서 정상적으로 수신되었음을 나타낸다. 200 OK : 요청이 성공했음을 나타내는 응답 코드. 201 Created : 요청이 성공했고, 자원이 생성되었음을 나타내는 응답 코드. 주로 POST, PUT 요청에 대한 결과. 202 Accepted : 요청은 성공했으나, 서버가 아직 요청을 완료하지 못함. 3xx (리다이렉션) : 클..

[자바] 가비지 컬렉션 GC

가비지 컬렉션 Garbage Collection(GC) 가비지 컬렉션이란? Heaq 영역에서 동적으로 할당했던 메모리 중 사용하지 않는 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스 C / C++ 언어에서는 가비지 컬렉션이 없어 프로그래머가 수동으로 메모리 할당과 해제를 해야한다. 자바는 JVM에 탑재된 가비지 컬렉터가 메모리 관리를 대행하기에 개발자 입장에서 메모리 관리와, 메모리 누수(Memory Leak) 문제에 대해 완벽히 관리하지 않아도 된다. 특정 개체가 garbage 인지 판단하기 위해서 도달능력(Reachability) 이라는 개념을 사용한다 객체에 레퍼런스가 있으면 Reachable로 구분되고, 객체에 유효한 레퍼런스가 없으면 Unreachable로 구분하고 가비지 컬렉..

[DB] 뷰

뷰 (View) 물리적인 테이블을 근거한 논리적인 가상 테이블이다. 테이블에는 데이터가 있지만 뷰에는 데이터가 없고 SQL만 저장되어 있다. 조인문 사용의 최소화로 사용상의 편의성을 최대화 한다. 뷰 사용시 장단점 장점 논리적 데이터 독립성을 제공한다. 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원한다. 복잡하고 긴 쿼리문의 접근을 단순화시킨다. 접근 제어를 통한 자동 보안을 제공한다. 단점 독립적인 인덱스를 가질 수 없다. ALTER VIEW 문을 사용할 수 없다. 즉, 뷰의 정의를 변경할 수 없다. 뷰로 구성된 내용에 대한 삽입, 갱신, 연산에 제약이 따른다. 뷰 문법 뷰 정의문 --문법-- CREATE VIEW 뷰이름[(속성이름[,속성이름])]AS SELECT문; --고객 테..

[데이터베이스] 정규화 (이상현상, 함수적 종속성, 1NF, 2NF, 3NF, BCNF)

DB 정규화 (Normalization) 데이터 중복과 삽입, 수정, 이상 현상을 최소화하기 위해 일련의 정규형에 따라 관계형 DB를 구성하는 과정 제일 처음 초기 테이블이 있고 순차적으로 정규형을 만족시키도록 테이블 구조를 조정하는 과정 정규형(normal form, NF)이란 정규화 되기 위해 준수해야하는 규칙 1NF 부터 BCNF 까지는 함수적 종속성과 키(Key)만으로 정의되는 정규화 일반적으로 3NF까지 도달하면 정규화 성립 이상현상 (Anomaly) 이상현상이란 데이터 중복으로 인한 부작용을 말한다. 삽입 이상 (Insertion Anomaly): 데이터를 삽입하는데 불필요한 속성도 함께 추가해야하는 경우 기본키가 {Student_id, Course_id} 인 경우 Course를 수강하지 않는..

[백준] 17398번: 통신망 분할

🔈 문제 BOJ의 인기스타, 방송인 권욱제는 통신 회사에 취업했다. 현재 이 통신 회사는 너무나 큰 통신망을 한 지사에서 관리하느라 큰 비용을 지불하고 있었다. 그래서 회사는 최근 IT의 트렌드 중 하나인 '탈중앙화'에 편승하여, 통신망을 분할하도록 결정했다. 그래서 욱제한테 통신망을 분할 할때 발생하는 비용을 분석하도록 지시했다. 현재 회사 망에는 1번부터 N번까지 총 N개의 통신 탑이 존재하며, 통신탑 간의 연결이 M개 존재한다. 이때 회사에서는 총 Q번 통신탑 간의 연결을 제거함으로써 하나의 통신망을 여러 개의 통신망으로 분리하려고 한다. 통신망이란, 통신탑의 연결을 통해 도달 가능한 통신탑들의 집합이다. 통신탑 간의 연결 관계를 제거할 때 드는 비용은 제거한 후 통신망이 두 개로 나누어진다면 나눠..