전체 글 40

[백준] 1, 2, 3 더하기 2 (12101) - python

문제 링크 : https://www.acmicpc.net/problem/12101문제 요약정수 n이 주어졌을 때 n을 1, 2, 3의 합으로 나타내는 방법 중에서 사전순으로 정렬했을 때 k번째로 오는 식을 나타내는 문제입니다. 풀이문제 풀이를 위해 DFS(깊이 우선 탐색) 알고리즘을 사용했습니다. 각 조합에 가장 작은 수인 1을 우선으로 추가해 주면서 DFS를 진행하게 된다면 최종 리스트에는 정렬된 값이 순서대로 들어있기 때문에 효율적으로 문제를 해결할 수 있습니다. 정답 코드import sysinput = sys.stdin.readlinedef dfs(nums, n, numbers): sumNums = sum(nums) if sumNums == n: numbers.append(n..

[Java] Getter와 Setter에 대해

오늘은 자바공부를 하면서 주의해야할 점 중에 Getter와 Setter에 관한 내용이 있어서 관련 사항들에 대해 알아보도록 하겠습니다. Getter와 Setter란?Getter와 Setter는 클래스의 멤버 변수에 대해 접근 및 수정 기능을 제공하는 메서드입니다. 자바에서 멤버 변수는 일반적으로 캡슐화의 원칙을 따르기 위해 private로 선언되며, 외부에서 직접 접근하지 못하게 보호됩니다. 그러나 클래스 내부에서 정의한 Getter와 Setter 메서드를 사용하면 멤버 변수에 접근하거나 값을 변경할 수 있습니다. 이를 통해 데이터의 무결성을 유지하거나 객체의 내부 상태를 제어할 수 있습니다. Getter와 Setter 정의 방법Getter 메서드: 멤버 변수의 값을 반환하는 역할을 합니다.일반적으로 g..

Java 2024.10.02

[프로그래밍] 객체지향 프로그래밍(OOP)이란?

오늘은 객체지향 프로그래밍에 대해 알아보겠습니다. 최근 인텔리제이로 자바를 공부하면서 프로그래밍 공부를 처음부터 다시 시작하는 마음으로 공부를 하고 있습니다. 그래서 객체지향 프로그래밍에 대해서 다시 개념을 잡고자 이 글을 작성하며 정리해 보았습니다. 객체지향 프로그래밍은 소프트웨어 개발에서 매우 중요한 개념으로, 어떤 프로그램을 코딩하더라도 사용되는 중요한 개념입니다. 효율적이고 유지보수가 간편한 그런 코드를 작성하는 것이 객체지향 프로그래밍의 목표라고 생각합니다. 객체와 클래스객체지향 프로그래밍에 대해 알아보기 전에 먼저 객체 대한 정보와 클래스에 관한 정보를 간단하게 설명해 보겠습니다.먼저 클래스란 특정 유형의 객체를 정의하기 위한 설계도입니다. 클래스는 객체의 속성과 메서드를 정의합니다. 클래스의..

프로그래밍 2024.09.26

[백준] LCS(9251) - python

문제 링크 : https://www.acmicpc.net/problem/9251문제 요약LCS는 두 수열이 주어졌을 때, 두 수열의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제입니다. 풀이LCS(Longest Common Subsequence) 알고리즘은 두 문자열에서 순서대로 존재하는 가장 긴 공통부분 수열을 찾는 알고리즘입니다. 이 알고리즘은 동적 계획법(Dynamic Programming)을 사용하여 두 문자열 간의 부분 수열을 비교해 나가는 방식으로 구현됩니다. 이때, 문자열의 각 문자를 비교하며 공통된 문자가 나오면 그 문자까지의 LCS 길이를 갱신합니다. 점화식각 문자열을 리스트로 만들어주고 문자를 하나씩 늘려가며 비교해주는 방식을 점화식으로 나타내면 다음과 같이 식을 세워볼 수 있습니..

[FastAPI] docker compose 사용하기

이번에는 docker compose를 사용해서 fastapi 서버를 여는 방법을 알아보도록 하겠습니다. docker compose의 장점은 여러가지 이미지를 같이 실행할 수 있고 연결을 쉽게 할 수 있다는 점입니다. Docker compose란?먼저 Docker compose란 멀티 컨테이너 애플리케이션을 정의하고 실행하기 위한 도구입니다. 일반적으로 Docker image만을 사용해서 실행할 경우 여러가지 컨테이너를 각자 실행시켜줘야하는 불편함이 있습니다. Docker compose는 이런 불편함을 줄여주고 단일 YAML 구성 파일에서 쉽게 관리할 수 있게 해줍니다. 공식 문서에서 말하는 Docker compose의 주요 이점은 여러가지가 있습니다.간소화된 제어효율적인 협업빠른 애플리케이션 개발환경 간..

Python/FastAPI 2024.09.23

[Java] Gradle과 Maven 비교

인텔리제이로 자바 프로젝트를 만들다 보니 나오는 Gradle과 Maven에 대해 알아보게 되었습니다. Gradle이란?Gradle은 Groovy 또는 Kotlin을 사용해서 빌드를 구성하는 다재다능한 빌드 도구입니다. 특히 대규모 다중 모듈 프로젝트에서 유연성과 속도가 뛰어난 것이 특징입니다. 그리고 Gradle의 증분 빌드 기능과 고급 캐싱은 빌드 프로세스를 상당히 가속화할 수 있습니다.주요 특징:DSL(Domain Specific Language): Groovy 또는 Kotlin 기반의 스크립트 언어를 사용하여 빌드 스크립트를 작성의존성 관리: Maven과 Ivy 리포지토리를 활용하여 프로젝트 의존성을 효율적으로 관리증분 빌드 및 빌드 캐시: 변경된 부분만 빌드하여 빌드시간 단축병렬 빌드: 멀티코어 ..

Java 2024.09.21

[Java] Spring과 Spring boot

자바 공부를 시작하면서 Spring boot에 대해 알아보던 중 Spring과 Spring boot의 차이점이 궁금해서 정보를 찾아보며 이 글을 작성하게 되었습니다. 이 글에서 두 프레임워크의 특징 및 주요 차이점에 대해 이야기해 보겠습니다. 먼저 Spring은 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 주로 엔터프라이즈 애플리케이션 개발에 사용됩니다. Spring에는 다양한 모듈이 있어서 개발자가 필요한 기능만 선택해서 사용할 수 있는 유연성을 제공합니다. 반면, Spring boot는 Spring 프레임워크를 기반으로 하여, 설정을 최소화하고 기본값을 제공하여 더 빠르고 간편하게 애플리 케이션을 개발할 수 있게 도와주는 도구입니다. Spring의 특징Spring의 가장 큰 특징 중 하나는..

Java 2024.09.18

[FastAPI] FastAPI Docker 이미지 빌드와 배포

FastAPI를 통해 개발하면서 배포하는 방식중 하나인 도커파일을 만드는 방식에 대해서 알아보겠습니다. 도커 파일을 사용하면 매우 간단한 방식으로 배포할 수 있어서 매우 편리합니다. 먼저 Dockerfile은 아래와 같이 작성할 수 있습니다. 파일 구조 예시.├── app│   ├── __init__.py│ └── main.py├── Dockerfile└── requirements.txt Dockerfile# python 버전 설정FROM python:3.9# 디렉토리 설정WORKDIR /code# requiremets 파일 복사COPY ./requirements.txt /code/requirements.txt# 패키지 설치RUN pip install --no-cache-dir --upgrade -r..

Python/FastAPI 2024.09.17

[FastAPI] 웹소켓

오늘은 제가 프로젝트를 진행하면서 FastAPI를 통해 웹소켓을 공부한 것에 대해 소개해 드리겠습니다. 웹소켓은 실시간 통신을 가능하게 해 주기 때문에 필요한 상황에서 매우 유용한 기능입니다. 웹소켓이란?웹소켓은 클라이언트와 서버 간의 양방향 통신을 가능하게 해주는 프로토콜입니다. HTTP와는 달리, 웹소켓은 연결이 수립된 후에는 지속적으로 열린 상태를 유지하며, 클라이언트와 서버가 서로 메시지를 주고받을 수 있습니다. 이로 인해 실시간 데이터 전송이 필요한 애플리케이션, 예를 들어 채팅 애플리케이션이나 실시간 알림 시스템에서 매우 유용하게 사용됩니다. FastAPI에서 웹소켓 사용하기FastAPI에서는 웹소켓을 쉽게 사용할 수 있도록 지원합니다. FastAPI의 WebSocket 클래스를 사용하면 간단..

Python/FastAPI 2024.09.15

[FastAPI] Postman API 소개

오늘은 제가 프로젝트를 진행하면서 여러 API를 발급하고 API를 확인하는 프로그램을 소개해 드리겠습니다. 제가 소개할 프로그램은 Postman 이라는 프로그램입니다. 아래 사이트에 들어가셔서 무료로 다운로드할 수 있는 프로그램입니다. 제가 이 프로그램을 추천하는 이유는 여러 메소드를 편리하게 테스트할 수 있고 웹소켓을 사용할 수 있어서입니다.https://www.postman.com/ Postman API Platform | Sign Up for FreePostman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so yo..

Python/FastAPI 2024.09.10