목록Computer Science (26)
고딩왕 코범석

안녕하세요! 이번 포스팅에서는 인프런에서 김영한님의 모든 개발자를 위한 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억 이하인..

문제는 여기! 안녕하세요! 이번 포스팅에서는 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 까지의 범위입니다. 광고 재생 시간은 동영상 재생 시간보다 짧거나 같게 주어집니다...

문제는 여기! 문제에서 주어진 좌표들을 트리로 표현헤야 힌다. 그 다음, 구현한 트리를 바탕으로 어떻게 순회를 구현할지가 핵심인 문제였다. 제한사항 및 주의사항 모든 노드의 x좌표는 서로 다르며, y좌표가 같으면 같은 레벨로 간주한다. 자식 노드의 y값은 항상 부모의 y값보다 작으며, 임의의 노드 V에서 왼쪽 서브트리의 x값은 V의 x보다 작다. 반대로 오른쪽 서브트리의 x값은 V의 x보다 크다. 풀이전략 우선 주어진 nodeinfo를 순서에 맞게 번호로 표현해야 한다. 시간 효율을 위해 나는 딕셔너리를 선언했다. ex) (x, y) : 1, (x, y) : 2 참고로 딕셔너리의 키는 리스트가 올 수 없어서 튜플로 처리했다. 이제 nodeinfo를 y에 대해 내림차순, x에 대해 오름차순으로 정렬하자. ..

문제는 여기! 저번에 풀었던 추석 트래픽 문제에서 시간 계산하는 과정이 비슷했던 문제다. 문제를 풀이하고 나서 22번 테스트 케이스가 런타임 에러가 나서 질문하기 게시판을 참조하였다. 이 부분은 제한사항 및 주의사항에서 설명하겠다. 제한사항 및 주의사항 셔틀은 항상 09:00 부터 운행하며 n = 운행 횟수, t = 운행하는 시간 간격, m = 한 셔틀버스에 탑승할 수 있는 최대 승객 다음날 셔틀을 타는 일은 없으며, 콘이 셔틀을 타고 사무실을 갈 수 있는 제일 늦은 시간 구하기 0 < n

문제는 여기! 처음에는 재귀를 이용해서 문제를 풀었다. 풀이후 다른 사람들의 풀이 중에서 좀 더 깔끔하고 iterative하게 작성한 방식도 있었다. 여러 풀이를 보는 것과 깔끔한 코드를 짜는것도 중요하다고 느꼈던 문제! 풀이는 재귀를 이용한 풀이로 작성할 것이다. 제한사항 및 주의사항 신청 순서대로 방 배정을 하되, 배정된 방을 원한다면 원하는 방보다 크지만 배정받지 않은 방 번호중 제일 작은 번호를 배정한다. k = 방 전체 갯수, 10 ** 12 이하 room_number 배열은 1