Problem Solving

🔗 문제 링크 : https://www.acmicpc.net/problem/2217  문제N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용..
🔗 문제 링크 : https://www.acmicpc.net/problem/1931  💀 2% 틀렸습니다! 19번째 줄 전에 `cur`과 `cnt`를 선언하는 과정에서 `cnt`만 `0`으로 초기화 했을 때 생긴 문제이다.`cur`도 `0`으로 초기화 해줘야, 정상적인 회의 시간 비교가 가능하다.   문제한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 ..
🔗 문제 링크 : https://www.acmicpc.net/problem/11047  문제준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.     입출력 예시입력첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)  출력첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.       풀이 그리디 알고리즘으로 해결할 수 있는 문제다...
🔗 문제 링크 : https://www.acmicpc.net/problem/7662  💀 12%에서 틀렸습니다! 이 경우는 문제에서 새로운 테스트케이스가 시작되면서 Q를 깨끗하게 비워주지 않아서 생기는 문제일 확률이 높다.본인도 Q로 사용할 컨테이너를 선언하는 위치를 테스트케이스 "시작 전" -> 테스트케이스 "시작" 부분으로 옮겨서 문제를 해결하였다.   문제이중 우선순위 큐(dual priority queue)는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭제할 때 연산(operation) 명령에 따라 우선순위가 가장 높은 데이터 또는 가장 낮은 데이터 중 하나를 삭제하는 점이다. 이중 우선순위 큐를 위해선 두 가지 연산이 사용되는..
🔗 문제 링크 : https://www.acmicpc.net/problem/1920  ☁ `cin.tie(0)`의 필요성을 찾았다..! 지금까지 입출력 시간 절약을 위해 `ios_base::sync_with_stdio(0);` 이 한 줄만 사용하고 있었다.운 좋게도 `cin.tie(0)`까지 쓰지 않아도 통과되는 문제만 만났나 보다..그리고 내심 `cin.tie(0)`를 꼭! 필요로 하는 시간 제한 문제를 원했는지도 모른다. ⏱ 해당 문제 풀이 코드에서 `cin.tie(0)`를 사용하지 않으면 1%에서 시간초과가 뜨는 모습을 볼 수 있다.      문제N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.     입출력 예..
❗ 문제의 입출력 예시에 오류가 있어 문제(그림)에 맞게 입력값을 수정하여 풀이하였습니다. (2024-11-23)   문제지민이는 다양한 크기의 정사각형 모양 돗자리를 가지고 공원에 소풍을 나왔습니다. 공원에는 이미 돗자리를 깔고 여가를 즐기는 사람들이 많아 지민이가 깔 수 있는 가장 큰 돗자리가 어떤 건지 확인하려 합니다. 예를 들어 지민이가 가지고 있는 돗자리의 한 변 길이가 5, 3, 2 세 종류이고, 사람들이 다음과 같이 앉아 있다면 지민이가 깔 수 있는 가장 큰 돗자리는 3x3 크기입니다. 지민이가 가진 돗자리들의 한 변의 길이들이 담긴 정수 리스트 mats, 현재 공원의 자리 배치도를 의미하는 2차원 문자열 리스트 park가 주어질 때 지민이가 깔 수 있는 가장 큰 돗자리의 한 변 길이를 re..
문제민수는 다양한 지폐를 수집하는 취미를 가지고 있습니다. 지폐마다 크기가 달라 지갑에 넣으려면 여러 번 접어서 넣어야 합니다. 예를 들어 지갑의 크기가 30 * 15이고 지폐의 크기가 26 * 17이라면 한번 반으로 접어 13 * 17 크기로 만든 뒤 90도 돌려서 지갑에 넣을 수 있습니다. 지폐를 접을 때는 다음과 같은 규칙을 지킵니다.지폐를 접을 때는 항상 길이가 긴 쪽을 반으로 접습니다.접기 전 길이가 홀수였다면 접은 후 소수점 이하는 버립니다.접힌 지폐를 그대로 또는 90도 돌려서 지갑에 넣을 수 있다면 그만 접습니다.지갑의 가로, 세로 크기를 담은 정수 리스트 wallet과 지폐의 가로, 세로 크기를 담은 정수 리스트 bill가 주어질 때, 지갑에 넣기 위해서 지폐를 최소 몇 번 접어야 하는지..
이미 완성된 코드에서 버그를 찾아 수정하는 디버깅 문제입니다.   문제온라인 서비스를 이용하기 위해서 닉네임이 필요합니다. 이때 닉네임이 될 수 있는 조건은 다음과 같습니다.닉네임의 길이가 4자 이상 8자 이하여야합니다.닉네임에는 소문자 l과w, 대문자 O와 W를 사용할 수 없습니다.이외의 영어 대소문자와 숫자는 모두 사용이 가능합니다.주어진 solution 함수는 사용할 수 없는 닉네임 nickname을 받아 사용할 수 있는 닉네임으로 바꿔주는 함수입니다. 이때 닉네임을 변경하는 규칙은 다음과 같으며 첫 번째 규칙부터 순서대로 적용합니다.소문자 l을 대문자 I로 변경합니다.소문자 w를 두 개의 소문자 v, 즉 vv로 변경합니다.대문자 W를 두 개의 대문자 V, 즉 VV로 변경합니다.대문자 O를 숫자 0..
빈칸 채우기 문제입니다.   문제영진이는 약속장소에 가기 위해 버스를 타려고 합니다. 버스에는 좌석이 총 seat개만큼 있습니다. 영진이는 버스 좌석에 앉아서 갈 수 있을지 궁금해합니다. 기점에서 출발한 버스가 영진이가 기다리는 정거장에 도착하기 전에 방문하는 각 정거장에서 승/하차한 승객 정보가 주어질 때, 영진이가 버스에 탄 순간 빈 좌석은 몇 개인지 구해주세요. 영진이가 기다리는 정거장에서는 영진이가 제일 먼저 버스에 탑승하며, 이전 정거장에서 버스에 탑승한 승객들은 남는 좌석이 있다면 항상 앉는다고 가정합니다. 또, 기점에서 출발하는 버스에는 승객이 0명 타고 있습니다. 예를 들어 다음은 좌석이 5개인 버스에 각 정거장에서 승/하차한 승객 정보를 나타냅니다. 영진이는 4번 정거장에서 기다리고 있으..
이미 완성된 코드에서 버그를 찾아 수정하는 디버깅 문제입니다.   문제ㅇㅇ시에서는 저수지가 하나 있는데, 도시 내에서 사용하는 모든 물은 이 저수지에 저장된 물을 끌어와 사용합니다. 이상 기후로 인해 극심한 가뭄이 예고된 상황에서, 지난 달의 물 사용량과 이번달부터 일정 기간 동안의 월별 물 사용량의 변화를 예측한 값을 이용해 몇 달 뒤 물이 부족해지는지 예측하려고 합니다. 이번달부터의 월별 물 사용량 변화를 예측한 값은 다음과 같이 리스트에 담겨 주어집니다.[10, -10, 10, -10, 10, -10, 10, -10, 10, -10]리스트의 각 원소는 해당 월의 물 사용량이 전 달에 비해 몇 % 만큼 증가 또는 감소하는지를 나타냅니다.예를 들어, 이번달의 물 사용량 (리스트의 첫 번째 원소)은 지난..
Mojing_
'Problem Solving' 태그의 글 목록