Today's Codekata
// N개의 최소공배수
class Solution {
public int solution(int[] arr) {
int lcm = arr[0];
for (int i = 1; i < arr.length; i++) {
int a = lcm;
int b = arr[i];
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
int gcd = a;
lcm = (lcm * arr[i]) / gcd;
}
return lcm;
}
}
최소공배수(`lcm`)를 배열의 첫 번째 값으로 초기화한다.
배열을 순회하면서 두 수씩 최소공배수를 계산해 `lcm`에 누적한다.
최대공약수('gcd')는 `while` 루프를 통해 직접 계산한다.
유클리드 알고리즘
두 자연수 a, b에 대해 a를 b로 나눈 나머지를 r이라 할 때,
GCD(a, b) = GCD(b, r) 이 성질을 반복해서 나머지가 0이 될 때의 b가 최대공약수가 된다.
예) `GCD(48, 18)`를 구한다고 해보면,
1. 48 ÷ 18 = 몫 2, 나머지 12
2. 18 ÷ 12 = 몫 1, 나머지 6
3. 12 ÷ 6 = 몫 0, 나머지 0
→ 나머지가 0이 되었을 때의 나누는 수 6이 바로 최대공약수가 된다.
Spring Boot에서 Swagger 설정과 활용
Swagger는 REST API를 개발할 때 자동으로 문서를 만들어주는 도구다.
API 정보를 한눈에 보고, 브라우저에서 바로 테스트할 수 있다.
1. Swagger란?
Swagger는 API 문서 자동화 도구다.
Spring 애플리케이션의 Controller 정보를 기반으로 엔드포인트, 요청 파라미터, 응답 형식을 자동으로 정리해준다.
덕분에 Postman을 열지 않아도 브라우저에서 직접 API를 호출하고 테스트할 수 있다.
2. 사용하는 이유
Swagger를 사용하면 다음과 같은 장점이 있다.
- API 문서를 자동으로 생성한다.
- 문서 화면에서 직접 요청을 보낼 수 있다.
- 프론트엔드나 외부 개발자와 협업이 쉬워진다.
- 코드 변경 시 문서가 자동으로 갱신된다.
3. Swagger 설정 코드 예시
Swagger 문서의 제목이나 설명을 지정하려면 다음과 같이 간단한 설정 클래스를 만든다.
@Configuration
@OpenAPIDefinition(
info = @Info(
title = "Project API 명세서",
description = "ABC 플랫폼의 REST API 문서입니다.",
version = "v1.0.0"
)
)
public class SwaggerConfig {
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.addServersItem(new Server().url("/"));
}
}
`@OpenAPIDefinition`은 문서 제목과 설명을, `OpenAPI` 객체는 서버 주소 등 추가 정보를 정의한다.
4. 활용 방법
프로젝트를 실행한 뒤 아래 주소로 접속한다.
http://localhost:8080/swagger-ui/index.html
로그인 토큰(JWT) 같은 보안 설정도 함께 적용할 수 있어 테스트 환경에서도 실제와 유사하게 사용할 수 있다.
마치며
Swagger는 설정이 간단하면서도 개발 효율을 크게 높여준다.
API를 문서로 정리하지 않아도 코드 기반으로 자동 관리되기 때문에 협업 시 오해를 줄이고 테스트 과정을 단축할 수 있다.