반응형

분류 전체보기 78

[프로그래머스] 여행경로

문제 풀이 1. 주어진 항공권을 도착지를 기준으로 정렬합니다. 2. 항공권 정보를 그래프로 변환합니다. 3. "ICN"에서 시작하여 DFS (깊이 우선 탐색)을 수행하여 경로를 찾습니다. 파이썬을 공부하면서 풀어서 정렬하는 방법에 대해서 새롭게 알게 되었습니다. 다음에 기회가 되면 더 자세히 정리하겠지만 간단하게 살펴보겠습니다. 항공권을 도착지 기준으로 오름차순 정렬을 해야해서 아래와 같이 sorted() 내장함수를 이용했습니다. sorted(tickets, key=lambda x: x[1]) key 매개변수는 정렬 기준을 지정하는 데 사용되며, 여기에는 함수가 전달됩니다. lambda는 파이썬에서 익명 함수를 정의하는 키워드입니다. 익명 함수는 이름 없이 정의되는 간단한 함수입니다. x는 lambda ..

알고리즘 2023.08.08

[leetcode] 1137. N-th Tribonacci Number

문제 주어진 문제는 Tribonacci 수열에서 n번째 항의 값을 구하는 것입니다. Tribonacci 수열은 이전 3개의 항을 더한 값으로 다음 항을 계산하는 특징을 가지고 있습니다. 풀이 주어진 문제를 해결하기 위해 다이나믹 프로그래을 활용할 수 있습니다. 다이나믹 프로그래밍은 중복되는 계산을 피하기 위해 계산 결과를 저장하여 재활용하는 기법입니다. Tribonacci 수열의 n번째 항의 값을 구하기 위해 다음과 같은 접근 방식을 사용합니다: 초기값 설정: dp 리스트를 생성하고 초기값으로 dp[0] = 0, dp[1] = 1, dp[2] = 1을 설정합니다. 반복문을 통한 값 계산: dp[i] = dp[i-3] + dp[i-2] + dp[i-1]을 반복문을 통해 계산하여 dp[n]의 값을 구합니다...

알고리즘 2023.07.22

[leetcode]345. Reverse Vowels of a String

문제 주어진 문자열에서 모음(vowels)들만 뒤집어 반환하는 문제입니다. 모음은 'a', 'e', 'i', 'o', 'u' 다섯 가지로 구성되어 있으며, 대소문자를 구분하지 않습니다. 풀이 문자열을 처리하기 위해 투포인터를 활용하여 문제를 해결할 수 있습니다. 주어진 문자열을 리스트로 변환합니다. 이렇게 하면 문자열의 각 문자에 직접 접근하여 값을 변경할 수 있습니다. 파이썬에서 문자열은 불변한 자료형이므로 리스트로 변환하여 가변한 형태로 다루는 것이 유용합니다. 왼쪽 인덱스(left_index)를 문자열의 시작 위치(0)로, 오른쪽 인덱스(right_index)를 문자열의 끝 위치(len(s) - 1)로 초기화합니다. 왼쪽 인덱스와 오른쪽 인덱스가 만나기 전까지 다음 작업을 반복합니다: 만약 왼쪽 인..

알고리즘 2023.07.21

왜 Spring에서는 필드 주입을 지양하나?

Spring Framework에서 의존성 주입이란 객체지향 프로그래밍에서 중요한 원칙 중 하나인 의존성 역전 원칙(Dependency Inversion Principle)을 적용하는 방법입니다. 이를 통해 객체 간의 결합도를 낮추고 코드의 유연성을 높일 수 있습니다. 이전 글에서 의존성 주입에 대한 간단한 설명을 작성했는데요. 이번에 의존성 주입 방법에 대해서 알아보겠습니다. Spring에서 의존성 주입을 하는 방법은 크게 세 가지입니다. 생성자 주입(Constructor Injection) Setter 주입(Setter Injection) 필드 주입(Field Injection) 이번 글에서는 이 세 가지 방법에 대해 자세히 알아보고 왜 필드 주입을 권장하지 않는지에 대해 살펴보겠습니다. 1. 생성자 ..

Spring 2023.07.20

Spring 프레임워크의 핵심 - DI와 IoC 이해하기

의존성 주입(Dependency Injection) 의존성 주입(Dependency Injection, DI)은 소프트웨어 엔지니어링에서 사용되는 설계 패턴 중 하나로, 객체지향 프로그래밍에서 클래스 간의 의존 관계를 관리하는 기법입니다. 코드의 결합도를 낮추고 재사용성 및 테스트 용이성을 향상시킵니다. 일반적으로 객체는 자신이 필요로 하는 의존 객체를 직접 생성하여 사용하는데, 이는 객체 간의 강력한 결합을 만들어냅니다. DI는 이러한 결합을 느슨하게 만들어주는데, 객체가 자신이 필요로 하는 의존 객체를 직접 생성하는 대신 외부에서 주입받아 사용하기 때문입니다. 예를 들어, 아래와 같은 코드가 있다고 가정해봅시다. public class CustomerService { private CustomerRe..

Spring 2023.07.19

Jenkins Multibranch Pipeline: 효과적인 브랜치 관리와 CI/CD 구축

Jenkins로 배우는 CI/CD 파이프라인 구축 1. Install and Run Jenkins With Docker Compose 2. Jenkins Pipeline 개념 및 예제 3. Github WebHooks 연동하여 Jenkins 빌드 자동화 4. Jenkins Multibranch Pipeline: 효과적인 브랜치 관리와 CI/CD 구축 Multibranch Pipeline은 Jenkins Pipeline의 확장이며, 소스 코드 관리 저장소의 모든 브랜치를 자동으로 검색하고 Jenkinsfile을 사용하여 파이프라인을 생성합니다. 이를 통해 여러 브랜치의 코드를 효율적으로 빌드하고 테스트할 수 있습니다. 각 브랜치의 Jenkinsfile은 해당 브랜치의 빌드, 테스트, 배포 방법을 정의합니다..

CI・CD 2023.06.25
반응형