알고리즘/프로그래머스

    2021 KAKAO BLIND RECRUITMENT - 광고 삽입

    이 문제는 주어진 시간 단위를 초 단위로 바꿔서 푸는 것이 핵심이다. 시간이 최대 99:59:59까지 주어지는데, 이를 초단위로 바꾸면 359,999초이다. 이는 배열로 충분히 표현할 수 있는 크기이므로, 배열 logs에 주어진 각 구간들의 시작 시간과 끝 시간을 이용해 배열을 채워준 뒤, adv_time 크기의 구간합 중 최대값을 구해주면 된다. 문제를 풀기 위해 먼저 string 형으로 주어진 시간을 int 형 초로 바꾸는 함수와, 반대로 다시 문제에 주어진 포맷으로 바꾸는 함수를 만들었다. int toInt(string time) { // string형 시간 -> int형 초 int hour = stoi(time.substr(0, 2)) * 3600; int minute = stoi(time.sub..

    2021 KAKAO BLIND RECRUITMENT - 합승 택시 요금

    이 문제는 택시비를 간선 간의 거리로 보면 그래프 상에서 최단거리를 구하는 문제로 생각해 볼 수 있다. 주요 포인트는 두 사람 A와 B가 합승을 통해 전체 비용을 단축시킬 수 있다는 것이다. 최소비용으로 A와 B 각자의 목적지에 갈 수 있는 경우는 두 가지 경우로 나눠볼 수 있다. 합승해서 같이 임의 지점까지 최단 비용으로 이동한 후, 여기서 각자의 목적지를 향해 최단 비용으로 가기 합승을 하지 않고 시작점 s에서 각자의 목적지를 향해 최단 비용으로 가기 두 가지 경우의 비용을 비교해서 더 작은 비용이 답이 될 것이다. 1번 방법의 최소 비용을 구하기 위해서는 시작점 s에서 임의의 지점까지 가는 최소 비용과 함께, 이 지점에서 각자의 목적지까지 가는 최소비용이 필요하다. 마침 지점의 갯수 n의 최대값도 ..

    2019 KAKAO BLIND RECRUITMENT - 매칭 점수

    모든 문제는 C++로 구현되어 있습니다. 이 문제는 세 단계로 나눠서 생각할 수 있다. 1. 태그에서 페이지의 링크를 구하고, 이를 기본 점수 및 최종 점수를 저장하는 맵에 매핑시키기 2. 페이지 별 기본점수 구하기 3. 각 페이지의 외부 링크를 구하고, 이에 맞게 링크 점수 뿌려주기 1. 태그에서 페이지의 url을 구하고, 이를 기본 점수 및 최종 점수를 저장하는 맵에 매핑시키기 먼저 헤더에 있는 std::stringstream을 사용해서 공백을 기준으로 각 페이지의 단어를 나눠서 별도의 배열 wordList에 저장한다. 그 다음 wordList를 순회하면서 "