전체 글 131

🧑🏻‍💻 Doubly Linked List 직접 구현 with dummy head & dummy tail (JAVA)

https://ming412.tistory.com/167 🧑🏻‍💻 Doubly Linked List 직접 구현 (JAVA) 1. Doubly Linked List 자료구조 https://ming412.tistory.com/159 Singly Linked List vs Doubly Linked List vs Circular Linked List 시간복잡도 & 사용 사례 Singly Linked List (단일 연결 리스트) 각 요소가 다음 요소만 가리키는 단 ming412.tistory.com dummy node를 사용하지 않고 Doubly Linked List를 구현하는 방법은 위 글에 자세히 적어놓았다. 이번에는 dummy node를 사용해서 간단히 search, add, remove 메서드를 구현하고..

[프로그래머스] 의상

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✍️ 문제 요약 - `clothes` 배열을 통해 코니가 가진 아이템(=의상)의 [이름, 종류]이 주어진다. - 예를 들어, `clothes = [["A", "headgear"], ["B", "headgear"], ["C", "eyewear"], ["D", "eyewear"]]` 이라면 서로 다른 두 종류의 headgear와 eyewear를 가지고 있는 것이다. - 같은 종류의 아이템은 하나만 착..

[프로그래머스] [1차] 셔틀버스

https://school.programmers.co.kr/learn/courses/30/lessons/17678 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✍️ 문제 요약 다른 크루가 버스 정류장에 도착하는 시간을 알고 있을 때, 게으른 콘이 버스에 탈 수 있으면서 버스 정류장에 가장 늦게 도착하려면 몇 시(HH:MM)에 도착해야 하는지 반환하라. - 버스는 09:00 부터 총 n 회 t 분 간격으로 정류장에 도착하며, 한 버스에는 최대 m 명의 크루가 탈 수 있다. - 버스에 자리만 있다면, 버스와 동시에 도착한 크루까지 탈 수 있다. - 콘은 같..

[프로그래머스] 혼자 놀기의 달인

https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✍️ 문제 요약 주어진 규칙에 따라 게임을 했을 때, 이 게임에서 얻을 수 있는 최고 점수를 구하라. 게임 규칙 - 정수 배열인 cards가 주어진다. - cards의 각 숫자를 상자에 넣는다. (각 상자에는 1번부터 순차적으로 증가하는 번호를 붙인다.) - 임의의 상자 하나를 선택하여 상자 안에 있는 숫자 카드를 확인한다. - 다음으로 확인한 숫자 카드에 적힌 번호에 해당하는 상자를 열어 안에..

🤔 많은 개발자들은 "왜" 스프링을 사용할까?

많은 개발자들이 Spring(혹은 Spring Boot)을 사용하는 것은 자명한 사실이다. 나도 Spring 프레임워크를 이용해서 개발을 하고 있지만, "스프링의 어떤 점 때문에 스프링을 사용하는걸까?"에 대해서 고민한 적이 없는 것 같아 이 글을 적게 되었다. 🙋‍♀️ 결론부터 말하자면, 스프링의 가장 큰 장점은 Bean, IoC, DI 이다. 스프링 IoC 컨테이너는 개발자가 작성한 Bean 정의를 기반으로 필요한 Bean(객체)을 생성하고 관리한다. 또한, 스프링은 DI를 통해 그걸 주입받아야 하는 객체들에게 알아서 주입해주기 때문에 개발자는 로직에만 집중할 수 있다. Bean Bean이란 스프링 컨테이너가 관리하는 자바 객체를 뜻한다. 스프링 컨테이너는 Bean의 라이프사이클을 관리하며, Bean..

🧑🏻‍💻 Doubly Linked List 직접 구현 (JAVA)

1. Doubly Linked List 자료구조 https://ming412.tistory.com/159 Singly Linked List vs Doubly Linked List vs Circular Linked List 시간복잡도 & 사용 사례 Singly Linked List (단일 연결 리스트) 각 요소가 다음 요소만 가리키는 단일 방향 구조이다. 시간 복잡도 검색 - 처음 노드(head)부터 하나씩 순회하며 원하는 값을 찾아야 하므로 O(n) 삽입 - 시작에 원 ming412.tistory.com 2. Doubly Linked List 직접 구현하기 1) ADT (Abstract Data Type) 정의 - 데이터 (Data) - Node - data: 데이터 - prev: 이전 노드를 참조 - ..

[BOJ] 3460. 이진수

3460번: 이진수 양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다. www.acmicpc.net ✍️ 문제 요약 양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치(인덱스)를 모두 출력하라. 💪 무식하게 풀기 문제를 읽자마자 생각나는대로 흐름을 정리해 보았다. 1. n을 2로 나눈 몫을 문자열에 누적한다. 2. n을 나머지로 갱신하며 마지막에 n을 누적한다. 3. 만들어진 문자열을 순환하며 1인 요소의 인덱스를 출력한다. def getBinary(n): res = '' while n >= 2: res += str(n%2) # 맨 뒤에 누적 (결과는 거꾸로..

[🌸다시, 봄] 모델과 DTO 간 변환을 다루는 방법에는 어떤 것들이 있을까? (정적 팩토리 메서드/Assembler/ModelMapper) 🤔

프로젝트를 진행하면서 아래와 같은 코드리뷰가 달렸다. 이 코드는 컨트롤러 코드로, 생성된 Diary를 객체를 DiaryResponse라는 DTO로 감싸서 응답하는 코드이다. 하지만 점점 Diary의 멤버 변수가 많아지다보니 이를 DTO로 조립하는 코드가 지저분해졌다 🥲 이를 해결하기 위해 고민하던 중 두 가지 방법을 생각할 수 있었다. 정적 팩토리 메서드 (from) 사용 정적 팩토리 메서드(Static Factory Method)란? "팩토리"라는 용어에는 객체를 생성하는 역할을 분리하겠다는 취지가 담겨있다. 즉, 정적 팩토리 메서드란 객체 생성의 역할을 하는 클래스 메서드라는 의미이다. DTO 내부에서 정적 팩토리 메서드의 from 메서드를 정의하여 아래와 같이 객체를 조립할 수 있다. public ..

[🌸다시, 봄] cursor 기반 pagination으로 무한스크롤 구현하기 🛠

클라이언트가 목록 조회를 요청하면, 서버는 데이터를 가져와야 하는데 이때 모든 데이터를 한번에 가져올 수는 없다. 따라서 서버 입장에서 1. `특정한 정렬 기준`에 따라 2. `지정된 개수`의 데이터를 전달하는 방법이 필요하다. 이를 페이지네이션(Pagination)이라고 표현하는데, 페이지네이션은 아래 두 가지 방식으로 구현할 수 있다. Offset-based Pagination vs Cursor-based Pagination 오프셋 기반 페이지네이션 - `offset`(시작 위치)과 `limit`(가져올 개수)을 사용하여 "페이지" 단위로 데이터를 가져온다. select * from post order by id desc # id 기준 내림차순 -> 최신 게시글부터 limit 5 # 가져올 개수 of..

🧑🏻‍💻 Singly LinkedList 직접 구현 (JAVA)

1. Singly LinkedList 자료구조 https://ming412.tistory.com/157 Array vs LinkedList 특징 & 성능 비교 Array (배열) 특징 - 같은 타입의 여러 변수를 하나의 묶음으로 다루는 자료구조 - 물리적으로 연속적인 메모리 공간에 저장되며 크기가 고정되어 있다. 시간 복잡도 접근(Access) - 배열은 무작위 접 ming412.tistory.com 2. Singly LinkedList 직접 구현하기 1) ADT (Abstract Data Type) 정의 - 데이터 (Data) - Node - data: 데이터 - next: 다음 노드를 참조 - MySinglyLinkedList - head: 연결 리스트의 처음 요소를 참조 - size: 연결 리스트의..