분류 전체보기223 [Spring] ResponseBodyAdvice를 사용해서 API에 공통 응답 포맷 적용하기 목차들어가기 전에프로젝트를 시작하게 되면 클라이언트가 서버에서 받은 응답을 원활하게 처리하도록 하기 위해 공통 응답으로 사용할 JSON 포맷을 정해서 봉투 패턴을 사용하는 경우가 많습니다.공통 응답 포맷을 적용하기 위해 컨트롤러 메소드의 반환 타입을 모두 공통 응답 DTO로 작성하게 됩니다. 문제는 컨트롤러 메소드를 작성할 때마다 매번 반환 객체를 공통 응답 DTO로 감싸줘야 해서 귀찮기도 하고, 실수로 누락할 수도 있다는 거죠. 그러다보니 자연스럽게 전역적으로 처리할 수 있을지 고민하게 됩니다. 이럴 때 사용할 수 있는 ResponseBodyAdvice에 대해 알아봅시다.ResponseBodyAdviceResponseBodyAdvice는 스프링에서 제공하는 인터페이스로, @ResponseBody를 달아.. 2025. 2. 25. [Kotlin] 백준 16956 : 늑대와 양 문제 링크 : https://www.acmicpc.net/problem/16956문제 해설목장에 적절하게 울타리를 배치해서 늑대가 양이 있는 칸으로 이동하지 못하게 해야 합니다. 이 문제에서 주목할 점은 울타리의 개수가 제한되어 있지 않고, 울타리의 최소 개수를 구하는 문제가 아니라는 점입니다. 늑대가 양이 있는 칸으로 이동할 수 없게 할 수만 있다면 울타리를 어떻게 배치해도 상관 없다는 것이죠. 다시 말해 이 문제는 늑대와 양이 딱 붙어 있는 경우에만 0을 출력하고 나머지 경우는 울타리를 적절하게 배치해서 출력해주면 됩니다. 정말 극단적으로 가면 모든 빈공간에 울타리를 배치해도 된다는 것이죠. 여기서는 목장의 모든 좌표를 순회하면서 늑대가 있는 좌표의 상하좌우에 양이 있으면 실패 처리하고, 빈공간이면 .. 2025. 2. 7. [Kotlin] 백준 31863 : 내진 설계 문제 링크 : https://www.acmicpc.net/problem/31863문제 해설최초 본진 발생 후 연쇄적으로 여진이 발생합니다. 지진이 끝났을 때 무너진 건물의 개수와 무너지지 않은 건물의 개수를 구해야 합니다. 건물이 파괴되면 새로운 여진이 발생하고 여진까지 모두 끝나야 지진이 끝난다는 점에서 최초 진원지와 건물이 파괴된 좌표들을 저장할 덱을 선언합니다. 그리고 입력에서 진원지의 좌표를 찾아 덱에 저장해줍니다. 그리고 건물의 내구도가 1과 2로 나눠져있기 때문에 각 좌표에 있는 건물의 내구도를 저장할 2차원 배열을 선언해줍니다.val epicenter = ArrayDeque>()val durability = Array(n) { IntArray(m) }var buildingCount = 0va.. 2025. 1. 6. [후기] 좌충우돌 Github Actions를 사용한 자동 배포 도입 후기 목차들어가기 전에이 글은 단순한 후기 글이기 때문에 자동 배포 방법에 대한 기술적인 내용은 다루지 않습니다. 지금 회사에서는 모든 배포 절차가 수동으로 진행되고 있었습니다. IDE에서 애플리케이션을 빌드하고 SFTP로 서버에 빌드된 파일을 업로드한 후 SSH로 서버에 접속해서 실행중인 서버를 종료하고 새로 서버를 실행하는 방식이었죠. 이런 수동 배포 절차를 진행할 때마다 배포할 서버에 접속한게 맞는지, 제대로 된 파일을 배포하는게 맞는지 등을 매번 체크해야 하는게 너무 번거롭다보니 소위 말하는 '딸깍' 한번이면 빌드부터 배포까지 되도록 자동 배포 도입을 시도하려고 했습니다.어떻게 자동 배포를 도입할까?자동 배포에 대해 아는 내용이 없다보니 어떤 방법을 써야할지부터 고민이었습니다. 어떤 배포 도구를 써야하.. 2024. 12. 10. [Kotlin] 백준 22941 : RPG 마스터 오명진 문제 링크 : https://www.acmicpc.net/problem/22941문제 해설주어진 조건에 따라 용사의 승리 여부를 시뮬레이션해야 합니다. 다만 시간 제한이 0.3초밖에 안되고 공격력은 최소가 1인 반면 HP는 최대 231−1이기 때문에 최악의 경우라면 (231−1)×2번의 연산을 수행해야 해서 시간 초과가 발생합니다. 하지만 문제에서 요구하는 답을 구하려면 용사가 쓰러지기 전에 마왕이 먼저 쓰러지는지의 여부만 확인하면 되기 때문에 단순 수학 계산만으로도 판별할 수 있습니다. 우선 마왕을 쓰러트리기 위해 필요한 용사의 공격 횟수를 구해서 소수점 이하는 올림처리 해줍니다.braveAttackCount = (devilHp + braveAtk - 1).. 2024. 11. 20. [회고록] 조금 늦은 입사 2년차 돌아보기 목차요즘 좀 다사다난해서 회고록 쓰는걸 까먹고 있었는데 벌써 2년차가 지났었습니다. 지난 1년동안은 또 무슨 일이 있었는지 돌아봐야겠습니다.회사 생활이번 1년동안은 개발 업무보다는 운영 위주의 업무가 많았던거 같습니다. 운영 업무 특성상 예상 못했던 이슈들이 예상 못한 시간에 펑펑 터지는 경우가 많은데다 빠르게 조치해야 해서 여러모로 피곤한 경우가 많았습니다. 가장 힘들었던 상황은 중계 서비스 운영 업무를 하다보니 양쪽 사이에 낀 채로 이슈 상황을 전달하기만 하고 정작 이슈를 직접 해결하지는 못하면서 기다리기만 해야 하는 상황이었습니다. 한쪽에서는 계속 수정 중이라고 하고 반대쪽에서는 언제 고쳐지는지 계속 문의가 들어오는게 아주 난감했죠.서비스 서버에 적용되어 있는 인증서를 교체해보기도 했습니다. 문제는.. 2024. 11. 5. 백준 1000문제 달성(feat. solved.ac 랜덤 마라톤) 대략 3~4달쯤 전에 solved.ac 프로필 배경 리스트를 구경하다가 랜덤 마라톤이라는게 생겼다는걸 알게 되었습니다. 일주일마다 사용자에게 맞는 문제 8개를 저난이도부터 고난이도까지 뽑아주고 다음주 문제들의 난이도는 이번주에 뽑힌 문제 해결 퍼포먼스에 따라 올라가거나 내려가는 시스템인것 같더라구요. 1일 1커밋을 하는 겸해서 1일 1백준을 푸는동안 어떤 문제를 풀지 고르는게 상당히 귀찮았는데 그걸 대신 해준다는 점에서 상당히 괜찮은 시스템이라고 생각합니다.랜덤 마라톤은 solved.ac 로그인 후 솔브닥 로고를 눌러 메인 페이지로 이동하면 진행할 수 있습니다!그렇게 거의 매일 랜덤 마라톤 문제를 풀다보니 랜덤 마라톤 문제만 100문제 넘게 풀게 되었고 랜덤마라톤 배지도 전부 따게 됐네요. 겸사겸사 오늘.. 2024. 10. 22. [Kotlin] 백준 30704 : 정사각형 연결하기 문제 링크 : https://www.acmicpc.net/problem/30704문제 해설한 변의 길이가 1인 정사각형을 겹치지 않게 나란히 붙여서 둘레가 최소가 되는 다각형을 만들어야 합니다. 격자 형태의 공간에서 한 변의 길이가 1인 정사각형을 배치해서 도형을 만든다는 점에서 이 문제는 넓이가 N인 다각형 중에서 둘레가 가장 작은 다각형의 둘레를 구하는 것과 같다는 것을 알 수 있습니다. 우선 둘레를 구하기 전에 다각형이 정사각형 또는 직사각형이 아닌 경우에 대해 한번 보겠습니다.N이 5인 경우에는 위와 같이 정사각형들을 배치할 수 있습니다. 이 경우에 대해 둘레를 구할 때 살짝 비틀어 보면 아래와 같이 둘레가 구해지는 것을 볼 수 있습니다.직사각형에서 움푹 들어간 부분의 변을 바깥으로.. 2024. 10. 15. 이전 1 2 3 4 ··· 28 다음