Problemhttps://school.programmers.co.kr/learn/courses/30/parts/12081 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr운영체제의 역할 중 하나는 컴퓨터 시스템의 자원을 효율적으로 관리하는 것이다.운영체제가 다음 규칙에 따라 프로세스를 관리할 경우 특정 프로세스가 몇 번째로 실행되는지 알아내라.실행 대기 큐(Queue)에서 대기중인 프로세스를 하나 꺼낸다.큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 큐에 다시 넣는다.만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행한다.한번 실행한 프로세스는 다시 큐에 넣지 ..
객체지향 프로그래밍이란?객체를 먼저 만들고 객체들을 조합해 프로그램을 완성하는 방법론 위키피디아에서는 객체지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 '객체'들의 모임으로 파악하고자 하는것이라 나와있다. 객체지향 프로그래밍은 프로그램의 일부분에 해당하는 객체(object)를 먼저 만들고, 이렇게 만들어진 객체들을 조합해서 전체 프로그램을 완성하는 방법론을 의미한다. 객체(object)란 무엇인가?객체는 자신 고유의 속성(attribute)를 가지고, 행위(behavior)를 가진 것을 말한다.객체가 되기 위해서는 객체 내부에서 데이터(속성)을 갖고, 이 데이터를 활용해 행위를 할 수 있어야 한다.우리가 살고 있는 현실 세계에 존재하는 모든 것들을 ..
Intro백엔드에서 주로 쓰는 아키텍쳐는 모놀리식 아키텍쳐와 MSA로 불리는 마이크로서비스 아키텍쳐로 나뉜다.요즘 백엔드 채용공고를 살펴보면 마이크로서비스 아키텍쳐 경험을 요구하는 공고가 꽤 있는 것을 볼 수 있다.그만큼 백엔드 개발자로 취업하기 위해서는 마이크로서비스 아키텍쳐가 무엇인지 잘 알아야 한다.이 글에서는 모놀리식 아키텍쳐와 마이크로서비스 아키텍쳐에 대해 다룬다. 모놀리식 아키텍쳐 ( Monolithic )하나의 앱에 모든 기능이! 우리가 개발을 시작하면 대부분 자연스럽게 접하는 아키텍쳐가 바로 모놀리식 아키텍쳐다.모놀리식 아키텍쳐는 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합되어 있는 구조를 말한다.쉽게 말해, 하나의 코드 베이스로 이뤄진 애플리케이션이다.위 아키텍쳐 ..
Intro 개발자 아티클 큐레이터 돌핀(dolp!n) 서비스의 DB는 MongoDB Atlas라는 클라우드 MongoDB 환경에서 돌아간다. 최근 돌핀 서비스를 개선하는 과정에서 데이터베이스를 재설계하기 위해서 Atlas에 있는 데이터들을 백업받아야 했다. 이 글에서는 Atlas를 포함한 MongoDB의 데이터를 백업(dump)하고 복구(restore) 하는 방법에 대해 다룬다. 1. MongoDB Database Tools 설치MongoDB는 mongodump와 mongorestore라는 툴을 통해서 데이터를 백업하고 복구할 수 있다.이 툴들은 MongoDB 홈페이지에 있는 MongoDB Database Tools에 함께 포함되어 있다. https://www.mongodb.com/try/download..
Intro이 글에서는 기초적인 정렬 알고리즘인 버블정렬에 대해 정리한다.버블 정렬은 평균적으로 \( O(n^2) \)의 시간복잡도를 갖고 있다. 혹시나, 시간복잡도에 대해 모른다면 아래 글을 읽고 오자.https://stringju.tistory.com/7 [알고리즘 #1] 시간 복잡도와 점근 표기법Intro 알고리즘 문제를 풀다보면 자주 등장하는 것이 시간 복잡도이다.이 글에서는 알고리즘의 시간 복잡도의 정의와 이를 표현하는 방법인 점근 표기법에 대해 서술한다. 알고리즘의 성능을stringju.tistory.com 버블 정렬버블 정렬의 개념은 순서가 잘못된 인접한 두 수를 교환하는 것이다. [10,3,7,4,9] 가 저장되어 있는 배열이 있고, 이를 오름차순(값이 작은 것 부터 나열)으로 정렬하자. 첫..
트랜잭션데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위 트랜잭션은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 말한다.여기서 데이터베이스의 상태를 변화시킨다는 것은 데이터베이스 연산을 의미한다.데이터베이스 연산에는생성(INSERT)조회(SELECT)업데이트(UPDATE)삭제(DELETE)가 있다. 여기서 작업 단위는 하나의 데이터베이스 연산을 말하는 것이 아니다.작업 단위는 논리적으로 여러 데이터베이스 연산을 하나로 묶은 걸 말한다. 예시로 이체 과정이 있다. '현주'가 '재혁'에게 밥값 2만원을 송금해야 한다고 생각해보자.이때 데이터베이스에서는1. '현주'의 계좌에서 2만원을 출금2. '재혁'의 계좌에 2만원을 입금이 2가지 연산을 해야 한다. 이 2가지 연산은 논리적으로 '..
Problemhttps://school.programmers.co.kr/learn/courses/30/parts/12077 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 연구실에 있는 \( N \) 마리의 폰켓몬 중, \( \frac{N}{2} \) 마리를 가져가도 된다.폰켓몬은 종류에 따라 번호를 붙인다. 이중 가장 많은 종류의 폰켓몬을 가져갈 때, 그 종류의 개수를 return 해야 한다. Input / Output Examplenums는 폰켓몬의 종류 번호가 담긴 1차원 배열이다. nums: [3,1,2,3]output: 2Solution 해당 문제는 해시 카테고리로 분류되어 있다.즉 해시를 사용..
Intro 알고리즘 문제를 풀다보면 자주 등장하는 것이 시간 복잡도이다.이 글에서는 알고리즘의 시간 복잡도의 정의와 이를 표현하는 방법인 점근 표기법에 대해 서술한다. 알고리즘의 성능을 어떻게 판단할까?크게 정확도와 효율성으로 판단할 수 있다.그 중 효율성은 시간 효율성과 공간 효율성으로 나뉜다. 시간 효율성을 나타낼 때는 시간 복잡도를 사용하고,공간 효율성을 나타낼 때는 공간 복잡도를 사용한다. 하지만 대개 공간복잡도의 상한은 시간복잡도이기 때문에 시간복잡도를 많이 사용한다. 시간 복잡도의 정의시간복잡도 = 알고리즘을 실행하는데 걸리는 시간을 표현하는 것 CS(컴퓨터과학/공학) 분야에서 시간복잡도란 프로그램의 입력값과 연산 수행 시간의 상관관계를 나타내는 척도이다. 알고리즘으로 한정해서 이야기를 한다면..
어쩌다보니 쌓인 기술부채새해를 맞아 2024년 한 해 동안 내가 개발했던 것을 돌아보았다.대학교 신입생이다보니 대학 수업과 개발 둘다 열심히 하다보니 생각보다 기술부채가 쌓였더라.이번 글은 작년에 쌓은 기술 부채를 점검하고, 이를 어떻게 해결하면 좋을까 싶어서 쓰게 되었다. 기술부채란?먼저 기술부채가 무엇일까?더 나은 방법 대신 더 쉬운 방법을 선택함으로써 발생하는 다시 개발해야 하는 수고(=비용) 마틴 파울러는 기술부채의 유형을 사분면을 통해 나타냈다.Prudent & Deliberate ( 신중한 & 의도적인 )Reckless & Deliberate ( 신중하지 않은 & 의도적인 )Reckless & Inadvertent ( 신중하지 않은 & 비의도적인 ) Prudent & Inadvertent (..
현금 들고가기 귀찮..나는 현금을 들고다니는 것이 너무나도 귀찮아서 잘 안쓴다.중학교 2학년이 되자마자 체크카드를 발급받았고, 그 이후로는 현금을 잘 안썼다. 그런데, 여행을 가기 위해선 현지 통화로 환전을 해서 현금을 들고가야 하는데, 나같은 사람에겐 너무나도 귀찮다.그래서 해외에서 쓸 수 있는 카드를 들고가려 했는데, 이것들이 생각보다 해외결제 수수료가 많이 붙는다.요즘은 여행가는 사람들을 대상으로 한 여행용 카드가 많이 나오고 있는 것 같은데,그 중에서 대표적인 몇가지를 비교해 보려 한다.해외결제 카드종류대표적으로 많이 쓰이는 카드 3장을 들고 왔다.여기 나열된 카드 이외에도 각 카드사에 보면 여행자 특화 카드상품이 있긴 할텐데..아래 있는게 가장 많이 쓰이는 것 같아서 비교하고자 한다.토스뱅크 토..