목록전체 글 (82)
고딩왕 코범석
문제는 여기! 안녕하세요! 이번 시간에는 프로그래머스의 연습문제인 "여행경로" 문제 풀이에 대해 포스팅하겠습니다. 문제의 설명이 조금 빈약 저의 머리도 빈약 해서 다른 사람들의 포스팅을 보고 풀이 방법에 대해서 조금 참고하면서 풀었습니다. 그럼 시작할게요! 제한사항 및 주의사항 주어진 공항의 수는 3 이상 10,000 이하 입니다. tickets의 각 행 [a, b]의 의미 : a 공항에서 b 공항으로 가는 항공권이 있다. 주어진 항공권을 모두 사용해야 합니다. 가능한 경로가 2개 이상일 경우, 알파벳 순서가 앞서는 경로를 return 합니다. 풀이전략 인트로에서 말씀드렸듯, 처음에 문제 자체를 올바르게 이해하지 못했습니다. 주어진 모든 항공권을 사용해야 한다라는 의미는 모든 공항을 탐색해야 한다는 의미..
안녕하세요! 이번 포스팅에서는 인프런에서 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 학습하고 정리의 목적으로 포스팅합니다. 이번 포스팅에서 다뤄볼 주제는 HTTP 메서드인 GET, POST, PUT, PATCH, DELETE와 올바른 설계란 무엇인가에 대해 설명합니다. API URI 설계 먼저, 요구사항과 API를 CRUD에 초점을 맞춰 작성해보겠습니다. 요구사항 API 회원 1명 조회 /read-member-by-id 회원 다수 조회 /read-member-all 회원 등록 /create-member 회원 수정 /update-member 회원 삭제 /delete-member 지금 처럼 API를 작성하는 것은 올바른 설계가 아닙니다. URI는 리소스를 식별하는게 가장 중요합니다. 저의 요구사..
문제는 여기! 안녕하세요! 이번 포스팅에서는 프로그래머스의 "월간 코드 챌린지 시즌1" 문제였던 풍선 터트리기 문제를 풀어볼까 합니다. 항상 "이 문제는 어떤 알고리즘으로 풀지?" 라고 생각하다가 신박한 방법이 필요했던 문제라서 이번 포스팅에서 정리해보았습니다. 스스로 완벽하게 해결하지는 못했던 문제였어서 다른 풀이들을 많이 참조했습니다. 바로 가보시죠! 제한사항 및 주의사항 임의의 인접한 두 풍선을 고르고 두 풍선중 하나를 터트릴 경우, 번호가 작은 풍선은 한번만 터트릴 수 있습니다. 이를 제외하면 번호가 큰 풍선만 터트릴 수 있습니다. 작은 풍선을 터트리는 경우를 저는 찬스라고 표현해보겠습니다. 풍선 리스트 a의 크기는 1 ~ 1,000,000 이며, a[i]의 크기는 -10억 이상 ~ 10억 이하인..
안녕하세요! 오늘은 제가 "스프링과 JPA 기반 웹 애플리케이션 개발"을 클론코딩하면서 보았던 ResponseEntity에 대해 배우고 정리해볼까 합니다. 우선, 저는 RestController에서 도메인 객체를 DTO로 변환해서 반환했습니다. 하지만 단순히 값만 보내는 것이 아닌 헤더, 바디, 상태 코드도 같이 보내줘야 하는 세심함도 알아야 진짜 백엔드 개발자 나는 가짜개발자! 악! 라고 생각하여 이번 기회에 공부하게 되었습니다. 부정확한 정보가 있을 경우에는 항상 댓글을 부탁드리겠습니다. 그럼 시작할게요! 참고로 저는 이 포스팅을 참조해서 작성했습니다. ResponseEntity? Spring에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재합니다. 이것은 HTTP 요청 또는 응답에 해당하..
문제는 여기! 안녕하세요! 이번 포스팅에서는 2019 카카오 개발자 겨울 인턴십 문제였던 "불량 사용자"를 풀이해보겠습니다. 이 문제는 접근을 어떻게 할지 몰라서 결국 다른 분들의 풀이를 참고했습니다. 사실 봐도 좀 헷갈리는 부분이 있어서 이 기회에 정리할 겸 포스팅하게 되었습니다. 그럼 풀이 시작해보겠습니다! 제한사항 및 주의사항 user_id 배열의 크기는 1 이상 8 이하 입니다. banned_id 배열의 크기는 1 이상 user_id 배열의 크기 이하 입니다. user_id, banned_id의 각 원소들은 길이가 1 이상 8 이하인 문자열 입니다. 불량 사용자 아이디는 '*' 문자를 하나 이상 포함하고 있습니다. 불량 사용자 아이디 하나는 응모자 아이디 중 하나에 대항하고 같은 응모자 아이디가 ..
문제는 여기! 안녕하세요! 이번 포스팅에서는 2021 카카오 블라인드 채용 문제인 "합승 택시 요금" 문제를 풀어보겠습니다. 2021년도 Level3 문제들 중에서 체감 상 가장 난이도가 낮은 것 같았습니다. 형냐들 나만그래? 최단 거리 문제를 살짝 응용하면 쉽게 풀 수 있는 문제라서 바로 풀이로 넘어가 보도록 하겠습니다. 제한사항 및 주의사항 지점 간 택시가 이동할 수 있는 경로를 간선이라고 하며, 간선에 표시된 숫자는 두 지점 사이의 예상 택시요금을 나타냅니다. 또한 이동방향에 따라 금액이 달라지지 않습니다. 지점의 갯수 n은 3이상 200 이하입니다. s, a, b는 1 ~ n까지의 범위이며, 서로 겹치지 않습니다. fares의 크기는 2 이상 n * (n - 1) / 2 이하입니다. fares의 ..
문제는 여기! 안녕하세요! 이번 포스팅에서는 2021 카카오 블라인드 채용 알고리즘 문제인 "광고 삽입" 문제를 풀이해보겠습니다. 2021년도 레벨3 문제들을 풀어보면서 느낀점은 확실히 예전 년도들에 비해 문제 난이도가 많이 어려웠습니다. 심지어 나온지 얼마 안된 문제여서 풀이를 해주신 분들이 많이 안계셔서 애를 많이 먹기도 했던 문제입니다. 저도 결국 카카오에서 직접 해주신 해설을 봐도 모르겠어서 다른 분의 코드를 참조하면서 이해했습니다. 그럼 풀이 시작할게요! 제한사항 및 유의사항 play_time, adv_time은 길이 8로 고정된 문자열이며, HH:MM:SS 형식입니다. 그리고 00:00:01 ~ 99:59:59 까지의 범위입니다. 광고 재생 시간은 동영상 재생 시간보다 짧거나 같게 주어집니다...
최근 스프링 프로젝트 공식 예제인 펫클리닉을 클론코딩 해보았습니다. 그리고 펫클리닉 기능들의 테스트 로직을 작성하며 얻었던 지식을 정리해보았습니다. 저는 국비지원 교육과정에서 프로젝트를 두번 진행한 경험이 있는데, 그 때 마다 테스트는 작성하지 않고 서버를 띄워 값이 정확히 들어왔는지 확인하는 방식으로 진행했습니다. 이후, 혼자 공부하면서 테스트에 대한 중요성을 알게 되었고, 펫클리닉을 기반으로 테스트를 어떻게 작성해야 하는지, 계층별로 확인해야 할 것들은 무엇인지 정리해보았습니다. 만약 포스팅에 틀린 설명이 있다면 꼭 피드백해주시면 고맙겠습니다. JUnit 먼저 Java는 JUnit으로 테스트를 작성합니다. 프로젝트의 Test class들을 그대로 남김으로써 추후 개발자에게 테스트 방법 및 클래스의 h..