문제 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 & 풀이 해당 문제는 경화가 최대한 균일한 크기로 귤 박스를 채우려고 하는 것에 있다. 박스에 담기는 귤의 갯수는 k로써 나타나게 되고 배열에는 여러개의 귤의 크기를 담아두었다 그러면 결국 풀이는 간단해진다. 최대한 비슷한 크기로 박스를 채워라 그리고 그 박스 안에 귤의 종류는 몇 개인가? 갯수가 많은 것으로 분류를 해두어야한다. 그렇다면 map에 key, value를 통해 저장..
인터페이스 Comparable 과 Comparator 우선 두 개에 대해 배우기 전에 공통점을 알아야한다. 이 두가지는 인터페이스라는 것이다. 인터페이스라는 것은 내부에 선언된 메소드를 반드시 구현해야한다는 것을 명심해야한다. 그렇다면 각각의 인터페이스에서 이 메소드를 가장 집중해서 알아보아야한다. Comparable은 CompareTo(T o) Comparator는 Compare(T o1, T o2) 이 메소드들이 해당 인터페이스들의 중요 메소드라고 볼 수 있다. 얘들은 뭐하는 애들일까? 이 두 인터페이스를 사용하는 이유가 뭘까? 물론 정렬을 할 때 굉장히 많이 사용하지만 중요한 건 따로 있다. 객체를 비교할 수 있다 기본적으로 같은 자료형은 부등호로도 충분히 쉽게 비교를 할 수 있다. 하지만 우리가 ..
Docker를 왜 사용하는 것일까? 서버를 관리하는 일은 매우 복잡하고 어려운 작업이다. 만약 서버를 개발할 때 개발 환경이 바뀌게 되면 컴퓨터의 셋팅부터 프로그램의 설치까지 모든 것을 처음부터 다시 설정해야 한다. 시스템 환경, 방화벽, 네트워크 설정 등등 너무 많은 것을 환경이 바뀔때 마다 바꿔 주어야하는 것이다. 게다가 DevOps나 MSA가 유행하면서 서비스가 잘게 나뉘면서 관리가 더욱 복잡해지게 되는데 새로운 툴은 끊임없이 발전하고 설치해야할 서버가 매우 많아지는 상황에서 서버 관리 방식의 변화가 필요해진 것이다. 이때 이러한 환경 속에서 한줄기 빛처럼 등장한 것이 바로 Docker이다 Docker란 도커는 리눅스 컨테이너 리눅스 어플리케이션을 프로세스 격리기술을 사용해서 더 쉽게 컨테이너로 실..
들어가기 앞서... 멀티 프로세스와 멀티 스레드에 대하여 공부하기 전 프로세스와 스레드를 알고 가는 것이 중요하다. 만약 궁금하다면 해당 블로그를 먼저 보고 오자 https://latewalk.tistory.com/173 💻 프로세스와 스레드 💬 프로세스 프로세스의 사전적 의미로는 "컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램"이라는 의미로 프로그램의 실행 상태이자, 메모리 공간에 할당된 실체이다. 각 프로세스는 latewalk.tistory.com 멀티 프로세스 멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술이다. 일반적으로 하나의 프로그램을 실행하면 하나의 프로세스가 생성되고 그에 대한 메모리가 할당되지만, 부가적인 기능을 위해서..
프론트가 없는 프로젝트를 진행하면서 한 가지 불편한 점이 있었다. 바로 내가 작성한 API가 제대로 작동을 하는지 확인을 하기 어렵다는 것이다. 그래서 우리는 API가 정상적으로 작동하는지 확인하기 위해 Postman을 사용하는 경우가 많다. 하지만 기존의 사용법은 그저 한 개의 API를 테스트 하기 위한 사용이였지만 이번에는 조금 다르다. 이번에는 시나리오를 통해 한 개의 과정 자체를 모두 테스트 해보는 과정을 알아보자 ENV 파일 만들기 1. Environments 등록 먼저 우리는 기본적인 URL을 Enviroments에서 등록할 수 있고 해당 파일을 Collections에서 사용할 수 있다. 이런식으로 우리는 기본적으로 값을 다루게 될 것이다. 이렇게 등록을 하고 Collections에서 사용할 ..
💬 프로세스 프로세스의 사전적 의미로는 "컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램"이라는 의미로 프로그램의 실행 상태이자, 메모리 공간에 할당된 실체이다. 각 프로세스는 생성되면서 고유한 메모리 공간을 할당 받게 되고 때문에 프로세스는 다른 프로세스와 독립적으로 존재하여 하나의 프로세스에 충돌이 발생해도 다른 프로세스에는 영향을 주지 않는다. 즉, 이해하기 쉽게 말하자면 정적인 프로그램을 실행시켜 동적으로 변환되면서 실행된 상태를 말하는 것이다. 위에서 말한 프로그램과 혼동이 올 수 있다. 두 개의 차이를 명확히 알아보자 프로그램 프로세스 어떤 작업을 하기 위해 실행할 수 있는 파일 실행되어 작업중인 컴퓨터 프로그램 파일이 저장 장치에 있지만 메모리에는 올라가 있지 않은 정적인 상태 메모리에 ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 & 풀이 문제를 이해하는 것은 아마 굉장히 편할 것이다 라고 생각한다. 하지만 풀이가 매우 중요한데 여기서 가장 눈여겨 보아야 할 것은 피보나치 수열을 사용할 수 있다는 것이다. 처음에 문제를 만나면 각각의 칸수를 계산하고 계산한 칸수를 저장하고 이런식으로 생각하기 마련이다. 하지만 우리에게 중요한 것은 경우의 수가 무엇이냐가 아닌 경우의 수의 갯수이다 이를 알고 천천히 문제를 다..
동적 계획법(DP, Dynamic Programming) 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법을 말한다. 부분 문제 반복과 최적 부분 구조를 가지는 알고리즘을 일반적인 방법에 비해 더욱 적은 시간 내에 풀 때 사용한다. DP를 사용하는 이유(조건 정리) 우선 DP를 배우고자 하는 사람들은 DP 문제를 접하고 나서 온 것일것이다. 그럼 가장 기초적인 궁금증 도데체 왜 DP를 사용하는 것일까? 만약 우리가 문제를 푸는 과정에서 재귀 함수를 사용하는 경우가 분명히 존재한다. 재귀의 경우 같은 로직을 여러번 반복하기 때문에 굉장히 비효율적인 계산을 하게 된다 가장 대표적인 재귀문제 피보나치 수열을 예로 들어보자 int fibo(int n) { if (n
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 && 풀이 해당 문제는 이해력이 필요한 문제라기 보다 최소공배수를 다룰 줄 아는지가 중요한 문제이다. 프로그래머스에서는 최대 공약수와 최소 공배수를 다루는 문제가 한번 있었다. https://school.programmers.co.kr/learn/courses/30/lessons/12940 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤..
💬 Cookie 와 session의 등장 HTTP 는 비연결 지향으로 서버가 클라이언트의 요청에 따라 응답을 보내주면 바로 연결을 끊는다.(Connectionless) 또한, 연결을 끊는 순간 클라이언트와 서버의 통신이 종료되며 상태 정보를 유지하지 않는다.(Stateless) 이와 같은 특성으로 HTTP 프로토콜은 모든 요청 간의 의존 관계가 없어 현재 접속한 사용자가 이전에 접속한 사용자와 같은 사용자인지 알 수 없다. 즉, 클라이언트와 서버가 통신할 때마다 새롭게 연결해야 하며 클라이언트는 매 요청마다 인증 과정을 거쳐야 한다. 따라서, HTTP 프로토콜에서 이전 요청과 현재 요청이 같은 사용자의 요청인지 알게 되는 상태 유지를 위해 쿠키와 세션을 사용하게 되었다. 💬 Cookie Stataless..