본문 바로가기

전체 글45

맥북 구매 1일차 후기 윈도우로 개발을 한지 어언 4년차... 드디어 맥북 프로 구입! 거금을 들여서 그것도 맥북pro로 산 이유는 크게 2가지이다. 첫째, "이직 준비"라고 쓰고 "C# 탈출"이라고 읽는다 둘째, 남들이 좋다 좋다 하니까 그냥 갖고 싶었다 대한민국 웹 시장에서 C# .NET은 그다지 인기가 없다. 게임 쪽에서는 여전히 사용하고는 있지만, 거의 사장 수준인것 같다. 개발(.NET 제외)을 꼭 MacOS로 해야하는건 아니지만 개발자 복지 중 하나가 맥북 지원인걸 보면 개발에 있어서 리눅스 환경은 중요해보인다. 이제 사용한지 1일차인데, 모든걸 윈도우 기준에서 적용하다보니 간단해보이는 설정도 모두 구글링을 통해 하고 있다. 처음엔 막막했지만 기본적인 사용방법은 어느정도 익힌 상태이다. 이제 개발을 시작해야하는데 프.. 2022. 7. 15.
[프로그래머스] K번째수 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. array의 각 원소는 1 이상 100 이하입니다. commands의 길이는 1 이상 50 이하입니다. commands의.. 2021. 12. 30.
정렬 알고리즘 - Merge Sort 병합 정렬 이란? 배열을 절반씩 계속 잘라서 가장 작은 조각들을 기준으로 정령, 병합하는 방식 장점 데이터분포에 상관없이 시간 복잡도는 O(nolog2n)으로 동일하다 레코드를 연결리스트(Linked List)로 구성하면, 링크 인덱스만 변경되기 때문에 데이터의 이동에 필요한 리소스는 작아진다. 따라서 연결리스트를 정렬할때는 Linked List 자료형을 사용하는 것이 좋다. 단점 배열로 구성하게 되면 임시 배열이 필요하다. 레코드의 크기가 큰 경우 이동횟수가 많으므로 시간정 낭비를 초래한다. 2021. 12. 30.
정렬알고리즘 - Quick Sort 퀵소트란? 특정한 값(pivot)을 기준으로 해당 값의 오른쪽은 큰값, 왼쪽은 작거나 같은 값으로 정렬 일반적으로 물리적으로 중간에 있는 값을 지정한다. (배열 크기 / 2) 정렬하는 방법은 아래의 과정을 반복한다. 시작의 값 (Left Pointer)과 Pivot값을 비교하여 Left > Pivot 이 나올때까지 Left Pointer++ 끝의 값 (Right Pointer)과 Pivot값을 비교하여 Pivot >= Right 이 나올때까지 Right Pointer-- Left Pointer에 있는 값과 Right Pointer에 있는 값을 바꿔준다. Left Pointer > Right Pointer가 될때까지 반복한다. 위 과정을 모두 정렬이 될때까지 반복하면되는데 백번 강의 듣는거보다 코드 한번 .. 2021. 12. 26.
[프로그래머스] 이중우선순위큐 문제 설명 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한 사항 operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다. 원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제.. 2021. 12. 26.
[프로그래머스] 디스크 컨트롤러 문제 설명 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은 요청이 들어왔습니다. 이를 그림으로 표현하면 아래와 같습니다. 한 번에 하나의 요청만을 수행할 수 있기 때문에 각각의 작업을 요청받은 순서대로 처리하면 다음과 같이 처리 됩니다. - A: 3ms 시점에 작업 완료 (요청에서 종료까지 : 3ms) - B: 1ms부터 대기하다가, 3ms 시점에 작업을 시작해서 12ms 시점에 작업 완료(요청에서 종료까지 : 11.. 2021. 12. 25.
[프로그래머스] 더 맵게 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한 사항 scovil.. 2021. 12. 24.
[Spring] 빈 스코프 - 웹 스코프, Request 스코프 웹 스코프 웹 환경에서만 동작 웹스코프는 프로토타입과 다르게 스프링이 해당 스코프의 종료시점까지 관리한다. 따라서 종료 메서드가 호출된다. 종류 request: HTTP 요청 하나가 들어오고 나갈때 까지 유지되는 스코프, 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고 관리된다. session: HTTP Session과 동일한 생명주기를 가지는 스코프 application: 서블릿 컨텍스느와 동일한 생명주기를 가지는 스코프 websocket: 웹 소켓과 동일한 생명주기를 가지는 스코프 Request 스코프 예제만들기 build.gradle에 추가 implementation 'org.springframework.boot:spring-boot-starter-web' 위 라이브러리를 추가하면 톰캣 포트.. 2021. 12. 23.
[Spring] 빈 스코프 (1) - 프로토타입 스코프 빈 스코프란? 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문에 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request: 웹 요청이 들어오고 나갈때까지 유지되는 스코프 session: 웹 세션이 생성되고 종료될때 까지 유지되는 스코프 application: 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프 프로토 타입 스코프 싱글톤 스코프의 빈을 조회하면 스프링 컨테이너는 항상 같은 인스턴스의.. 2021. 12. 23.