We will find a way, we always have.

-interstellar

분류 전체보기 289

[구름톤 챌린지] 완벽한 햄버거 만들기 - 학습 일기 (1-4)

🔈 문제 문제의 요구사항은 N개의 정수 데이터가 주어졌을 때, 조건대로 정렬되어 있는지 확인하는 문제입니다. 여기서 주어진 조건은 배열의 최대값을 기준으로 왼쪽이나 오른쪽으로 갈수록 정수의 값이 같거나 감소해야 한다. 📚 문제 풀이 문제의 조건을 만족하려면 오름차순, 내림차순 혹은 올라갔다 내려가도록 정렬되어있는지 파악하면 된다. 조건을 만족하려면 배열안에 nums[i] > nums[i+1] < nums[i+2] 이 True 인 곳이 없어야 한다. 감소하다가 증가하는 값이 존재하면 안되기 때문이다. 반복문을 사용해 해당 값을 포함하고 있는지 아닌지 bool 값을 반환하여 문제를 해결할 수 있다. 모든 조건문이 참이면 참을 반환하는 all() 을 사용하여 문제를 해결하였다. 💻 코드 HTML 삽입 미리보기..

Problem Solving 2023.08.18

[OS] IPC (Inter Process Communication)

IPC (Inter Process Communication) IPC는 Inter Process Communication의 약자로 프로세스 간의 통신을 의미한다. 프로세스는 각각 독립적으로 실행되기 때문에 이들간의 통신은 커널 영역에서 IPC 설비를 이용해야 한다. 반대로 스레드는 다른 스레드들과 메모리공간과 자원을 공유하기에 프로세스 통신보다 구현이 쉽다. IPC 종류 파이프 Pipe 초기 UNIX 시스템의 IPC 기법으로 메시지 전달 방식의 일종 파일 I/O를 통해 프로세스 간 데이터를 주고 받는다. FIFO 구조를 갖는다. 파이프 생성 시 두 개의 파일 디스크립터(read, write) 가 return 된다. 파이프는 두 개의 프로세스에 대해 단방향 통신을 지원한다. 통신을 위한 메모리공간(버퍼)를 ..

[백준] 28457번: Every? Only One's Marble - 파이썬

🔈 문제 유틸은 오늘도 혼자 집에 있다. 심심해서 같이 부루마불 게임을 할 사람을 찾아봤지만 아무도 없었다. 그렇게 한 시간, 두 시간... 도저히 참을 수 없었던 유틸은 부루마불 게임을 혼자 할 방법을 생각해 냈다. 혼자 하는 부루마불 게임에 적용되는 규칙은 다음과 같다. 일반 칸은 두 종류다. 도시 칸: 돈을 내고 땅을 사야 하는 칸 황금 열쇠 칸: 특정한 효과가 있는 카드가 발동되는 칸 특수 칸은 네 종류다. 시작 칸: 이 칸에 정확히 멈추거나 지나가게 되면, 월급을 받게 된다. 무인도 칸: 이 칸에 정확히 멈추게 되면, 다음 세 턴 동안 갇히게 된다. 갇혀 있는 동안, 두 주사위를 던졌을 때 눈이 같은 수로 나오면 무인도를 탈출하게 되며 두 주사위를 한 번 더 던져서 나온 수만큼 이동한다. 사회복..

[백준] 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로 구분하고 가비지 컬렉..