https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 힌트 TreeSet을 적절히 사용하면 정렬 코드를 줄일 수 있다. 장르 이름, 플레이 횟수 처럼 하나의 묶음으로 관리해야 하는 정보는 객체를 만든다. 테스트케이스 2, 15 힌트 : 제한 조건 3번을 참조할 것 해답 보기 더보기 static class Music { int id; int playCount; public Music(int id, int playCount) { this.id = i..
스프링 부트 서버에 HTTPS를 달아야 해서 그 과정에서 삽질했던 것들을 기록하고 공유하고자 한다. 우선 AWS EC2에 HTTPS를 설정하는 방법은 1. certbot로 설정하는 방법 2. AWS CloudFront로 하는 방법 두 가지가 존재하는데, 개인적으로 certbot이 더 쉽지만 이번에는 AWS CloudFront를 사용해본다. # SSL 설정 방법 구체적인 설정 방법은 다음 동영상을 따라한다. https://www.youtube.com/watch?v=WS2n8mkrFaY 위 방법대로 생성하고 몇 가지 추가적으로 수정해야 할 요소들을 정리한다. SSL 설정을 했는데, 잘되던 프론트와의 통신에 문제가 생긴다면 백에서 조치할 사항들을 정리한다. 내가 겪었던 오류들은 Authorization 헤더가..
https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 힌트 생각보다 쉬운 최단경로 경우의 수 구하는 문제이다. 근데 함정은 이 문제 자체에 있다... 좋은 문제는 아닌 것 같다. 물 웅덩이의 좌표는 x, y가 거꾸로 되어있으니 주의하자. (2,2) 이렇게 되어있어서 심지어 헷갈린다. 본인이 코드를 제대로 작성한 것 같은데 테스트케이스 1개만 성공한다면 웅덩이 좌표를 확인하길 바란다. 효율성 테스트 힌트 : 이것도 좀 문제가 이상한데, 경우의 수를..
https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 힌트 hit 다음으로 올 수 있는 경우의 수는 hot, dot, dog, lot, log, cog 인데, 변환 조건 때문에 hot만 가능하다. 즉, 변환 가능한 단어들에 대해서 DFS를 진행하고, target 단어에 도달하면 지금까지 방문한 단어들 (깊이값)을 저장한다. 저장된 깊이값중 가장 작은 값을 찾으면 된다. 방문했던 단어는 재방문을 방지하기 위해 visited를 관리해야한다. (힌트 ..
22년 한 해가 벌써 지나갔다. 되돌아보면 21년도는 개발 영역에 입문하여 백엔드 개발자로 진로의 방향을 결정하는 한 해였다면, 22년도는 백엔드 개발자로서 가장 많이 학습하고 성장했던 지난 1년이 아니었나 싶다. 1월~3월 (3학년 겨울방학) 스프링 부트 이론 학습 코테이토 1기 동아리 활동 - 알고리즘 스터디 팀장 파이썬 알고리즘 공부 22년도 1월~3월은 스프링 부트 이론 학습과 파이썬 알고리즘 공부를 위주로 진행했다. 프로젝트 경험은 아직 없어서 코테이토 동아리에서도 알고리즘 스터디 팀장을 맡아서 진행했었다. 이때 프로그래머스 lv.2 백준 골드4를 달성할 만큼 알고리즘 문제를 풀었었다. 스프링 부트는 MVC의 기본적인 기능 (인터셉터, 예외 처리, 유효성 검증)을 학습하고 간단한 타임리프 문법과..
개발을 하다가 Swagger가 갑자기 먹통이 된 경우가 있었다. Swagger로 접속하면 MMethodArgumentTypeMismatchException가 발생했었다. 엄청난 삽질 끝에 Swagger가 RestController로 선언된 컨트롤러에 문자열 URI가 오지 않고 바로 {id}가 오는 경우 때문에 발생한 문제였다. 혹시라도 해당 오류가 발생한다면 컨트롤러 단의 API 엔드포인트 매핑이 적절하게 이루어져 있는지 확인하면 되겠다.
https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 힌트 입력 크기가 100만이라 2중 반복문을 통해서 하나하나 비교하면 효율성 테스트에서 걸리게 된다. 모든 요소를 전부 비교할 필요가 없다. phone_book 배열을 사전순으로 정렬하면, 인접한 요소끼리만 비교하는 것으로 충분하다. 왜냐하면 인접한 요소를 비교했는데 접두사가 아니면, 사전순으로 정렬된 후의 요소들도 당연히 아니기 때문이다. 해답 보기 더보기 public static boole..
서비스 레이어 단위 테스트를 할 때 private 메소드를 테스트 하는 방법에 대해 공유하고자 한다. # 테스트 할 메소드 private fun String.toSort(): Sort { return if (this == "DATE") { Sort.by(Sort.Direction.DESC, "modifiedAt") } else { Sort.by(Sort.Direction.DESC, "likeCount") } } 문자열 확장함수로 정의된 toSort() 메소드는 정렬 기준을 문자열로 DATE 이면, modifiedAt 기준 내림차순, LIKE이면 likeCount 기준 내림차순으로 정렬하는 Sort 객체를 반환하는 메소드이다. # private 메소드 자체 테스트 @Test fun `(private) to..