안녕하세요😊

아는 것만 보이는 게 아닌, 아는 만큼 보인다고 생각하는 백엔드 개발자입니다.
경험/이슈

Gradle 버전 이슈로 Lombok이 안 됨

결론으로 바로 가기 먼저 이 문제는 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'라는 책을 실습하는 과정에서 마주친 상황이다. 책은 몇 년 전에 지어진 기준이라 자바나 스프링부트의 버전이 낮게 되어있다. 그렇지만 그 당시 버전보다는 지금 상황에서 안정된 최신 버전으로 변경사항은 고치며 해보고 싶어 최신버전으로 진행했다. Spring Boot : 3.1.2 Java : 17 Gradle : 8.2.1 (Gradle은 신경 못 썼지만 이거 때문에 문제가 있었다..) 문제 상황 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.projectlombok:lombok' imple..

알고리둠/프로그래머쓱

[프로그래머스] [Kotlin] [Level2] 괄호 회전하기

코딩테스트 연습 - 괄호 회전하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. (), [], {} 는 모두 올바른 괄호 문자열입니다. 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다. 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호..

알고리둠/프로그래머쓱

[프로그래머스] [Kotlin] [Level2] 귤 고르기

코딩테스트 연습 - 귤 고르기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기..

스터딩/Kotlin

[예공코] [Kotlin] 변수/Null 안정성

변수 코틀린에는 강력한 타입추론(type inference) 기능이 있다. 변수의 타입을 명시해도 되지만, 생략하고 컴파일러가 추론하도록 해도 된다. 코틀린은 불변 변수 val 사용을 권장하고 있다. 불변 변수는 한 번 선언하고 나면 값을 변경할 수 없다. fun main() { var a: String = "first" println(a) a = "sec" println(a) val b: Int = 1 val c = 3 } // 실행 결과 first sec 변이 변수 var a를 선언하면서 초기화를 해주었다. a에 새로운 String 값을 할당할 수 있다. 불변 변수 val를 선언하고 초기화하고, 타입 선언은 생략할 수도 있다. 컴파일러가 3을 보고 Int 타입으로 추론을 한다. fun main() {..

경험/회고

백엔드 개발 중 나만의 규칙

개발을 할 때 유지보수하기 쉽게, 남이 봤을 때 직관적이게, 그렇지만 깔끔하게 구성하려고 노력해 봤다. 컨트롤러에서 어떤 API인지 직관적으로 나타내보자. 우선 api문서를 작성하던 어떤 메서드가 있는지 확인하던 컨트롤러를 가장 먼저 보게 될 것이다. 물론 함수명이나 컨트롤러에 작성된 로직들로만 이게 어떤 역할을 하는 api인지 알면 좋지만 그렇지 못할 수도 있기에 주석을 작성해 봤다. @RestController @RequestMapping("resource") class ResourceController( private val resourceService: ResourceService ) { /** 페이징 API **/ @GetMapping("/list") fun loadPagedResource( @..

스터딩/Kotlin

[예공코] [Kotlin] 함수

중위 함수 Infix Functions 파라미터를 하나만 받는 멤버 함수나 확장(extension) 함수는, 해당 함수를 "중위 함수"형태로 쓸 수 있다. fun main() { infix fun Int.times(str: String) = str.repeat(this) println(2 times "Bye ") val pair = "자바" to "코틀린" println(pair) infix fun String.onto(other: String) = Pair(this, other) val myPair = "자바" onto "코틀린" println(myPair) val a = Person("A") val b = Person("B") a likes b } class Person(val name: String..

알고리둠/프로그래머쓱

[프로그래머스] [Kotlin] [Level2] 멀리 뛰기

코딩테스트 연습 - 멀리뛰기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한 번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567을 나눈 나머지를 리턴하는 함수, solution을 완성하..

알고리둠/프로그래머쓱

[프로그래머스] [Kotlin] [Level2] N개의 최소공배수

코딩테스트 연습 - N개의 최소공배수 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요. 제한사항 arr은 길이 1 이상, 15 이하인 배열입니다..

호야_
개발잠