본문 바로가기

99클럽 코테 스터디

(24)
99클럽 코테 스터디 30일차 (택배 배달과 수거하기) 오늘의 문제: 프로그래머스 택배 배달과 수거하기문제 설명https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 풀이이 문제는 처음에 알고리즘을 떠올리는게 쉽지 않았다. 문제의 질문하기 페이지에서 힌트를 얻어 그리디 알고리즘으로 문제를 해결하였다. 문제의 첫번째 예시로 어떻게 그리디 한지 설명하려고 한다.deliveries가 [1, 0, 3, 1, 2], pickups가 [0, 3, 0, 4, 0] 경우배달할 집 과 픽업할 집의 값이 0이 아닌 값들중 가장 먼 거리를 각각 구한다. 위의 경우 배..
99클럽 코테 스터디 31일차 (BOJ 5972 택배 배송) 오늘의 문제: BOJ 5972(택배 배송)문제 설명농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는 구두쇠라서 최소한의 소들을 만나면서 지나가고 싶습니다.농부 현서에게는 지도가 있습니다. N (1 농부 현서의 지도가 주어지고, 지나가는 길에 소를 만나면 줘야할 여물의 비용이 주어질 때 최소 여물은 얼마일까요? 농부 현서는 가는 길의 길이는 고려하지 않습니다.문제 해결가장 기본적인 다익스트라 유형의 문제 입니다. 현서는 1에서만 출발하고 찬홍이는 N에서 출발하기 때문에 다익스트라 알고리즘을 사용해서 1에서 N까지 최소값을 저장하는 dp 배열을 만들고 최소값을 갱신해줍니다...
99클럽 코테 스터디 29일차 (BOJ 11657 타임머신) 오늘의 문제: BOJ 11657(타임머신)문제 설명N개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 버스가 M개 있다. 각 버스는 A, B, C로 나타낼 수 있는데, A는 시작도시, B는 도착도시, C는 버스를 타고 이동하는데 걸리는 시간이다. 시간 C가 양수가 아닌 경우가 있다. C = 0인 경우는 순간 이동을 하는 경우, C 1번 도시에서 출발해서 나머지 도시로 가는 가장 빠른 시간을 구하는 프로그램을 작성하시오.만약 1번 도시에서 출발해 어떤 도시로 가는 과정에서 시간을 무한히 오래 전으로 되돌릴 수 있다면 첫째 줄에 -1을 출력한다. 문제 해결첫 주차에 공부했던 벨만-포드 알고리즘을 사용하여 해결하였습니다. 벨만-포드 알고리즘이란벨만-포드 알고리즘특정 시작 노드로 부터 모든 ..
99클럽 코테 스터디 28일차 (프로그래머스 이모티콘 할인) 오늘의 문제: 프로그래머스 이모티콘 할인문제 설명https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 풀이1. [10, 20, 30, 40] 할인율을 이모티콘 수에 따른 모든 경우의 수 구하기2. 1번에서 구한 할인율 경우의 수 완전탐색으로 탐색하면서 2가지 조건(1. 이모티콘 플러스 서비스 가입자를 최대한 늘리는 것, 2. 이모티콘 판매액을 최대한 늘리는 것)에 맞는 할인율 경우의 수 구하기from copy import deepcopycomb = []def dfs(discount, len..
99클럽 코테 스터디 27일차 (BOJ 1446 지름길) 오늘의 문제: BOJ 1446(지름길)문제 설명매일 아침, 세준이는 학교에 가기 위해서 차를 타고 D킬로미터 길이의 고속도로를 지난다. 이 고속도로는 심각하게 커브가 많아서 정말 운전하기도 힘들다. 어느 날, 세준이는 이 고속도로에 지름길이 존재한다는 것을 알게 되었다. 모든 지름길은 일방통행이고, 고속도로를 역주행할 수는 없다.세준이가 운전해야 하는 거리의 최솟값을 출력하시오. 문제풀이도착지점 까지 갈수 있는 방법은 총 2가지이다. 1. 고속도로를 타고 그냥 가기2. 지름길을 사용해서 가기위의 방법을 고려해서 dp에 최소값을 기록하면서 도착지점까지 가는 최소값을 기록해주면 된다.주의 사항으로는 되돌아오는 것이 불가능하기 때문에 지름길의 끝점이 도착 지점을 지나치면 지름길을 사용할 수 없다.# 입력받기n..
99클럽 코테 스터디 24일차 (BOJ 2437 저울) 오늘의 문제: BOJ 2437(저울)문제 설명하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있다.무게가 양의 정수인 N개의 저울추가 주어질 때, 이 추들을 사용하여 측정할 수 없는 양의 정수 무게 중 최솟값을 구하는 프로그램을 작성하시오.예를 들어, 무게가 각각 3, 1, 6, 2, 7, 30, 1인 7개의 저울추가 주어졌을 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값은 21이다. 문제 풀이이 문제의 경우 사용된 알고리즘과 코드는 간단한데 그리디라는 접근 방법을 떠올리는게 쉽지 않은 문제..
99클럽 코테 스터디 23일차 (BOJ 15686 치킨배달) 오늘의 문제: BOJ 15686(치킨배달)문제 설명크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다.이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 집을 기준으로 정해지며, 각각의 집은 치킨 거리를 가지고 있다. 도시의 치킨 거리는 모든 집의 치킨 거리의 합이다.임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2..
99클럽 코테 스터디 21일차 (BOJ 17182 우주탐사선) 오늘의 문제 : BOJ 17182(우주 탐사선)문제 설명우주 탐사선 ana호는 어떤 행성계를 탐사하기 위해 발사된다. 모든 행성을 탐사하는데 걸리는 최소 시간을 계산하려 한다. 입력으로는 ana호가 탐색할 행성의 개수와 ana호가 발사되는 행성의 위치와 ana호가 행성 간 이동을 하는데 걸리는 시간이 2차원 행렬로 주어진다. 행성의 위치는 0부터 시작하여 0은 행렬에서 0번째 인덱스에 해당하는 행성을 의미한다. 2차원 행렬에서 i, j 번 요소는 i 번째 행성에서 j 번째 행성에 도달하는데 걸리는 시간을 나타낸다. i와 j가 같을 때는 항상 0이 주어진다. 모든 행성을 탐사하는데 걸리는 최소 시간을 계산하여라.탐사 후 다시 시작 행성으로 돌아올 필요는 없으며 이미 방문한 행성도 중복해서 갈 수 있다. 문..