문제 링크 https://www.acmicpc.net/problem/15686 ◆문제 해설 및 설명◆ 문제 : 세준이는 책을 원래 자리에 놓아야 한다. 한 번에 M개의 책을 들 수 있다. 책들과 세준이의 시작 위치는 0이다. 책들의 위치는 세준이의 걸음을 기준으로 제공된다. 이때 책을 모두 제자리에 놔둘 때 드는 최소 걸음 수를 구하라. (단, 모든 책을 놓고 나서 0으로 돌아올 필요는 없다.) 이 문제는 그리디 알고리즘으로 풀었다. 예제 입력을 보기 쉽게 나타내면 아래 그림처럼 나온다. 세준이가 들 수 있는 책의 갯수가 1일 때, 각각 모든 위치에 가는 것(편도)을 계산하고 제일 먼 위치만 제외하고 x2를 해주었다. (갔다가 책을 가지러 다시 와야 하기 때문에 거리가 두 배가 된다.) 가장 큰 값을 제..
서론 완전 탐색 문제를 제공하는 2주차가 시작되었다. 1주차 문제는 쉬웠는데, 오늘 푼 2주차 문제는 문자열과 순열 그리고 unique를 사용하게되어 복잡해서 푸는 맛이 있었다. 5일차 문자열 나누기 문제 요약 : 문자열을 받고, 3개로 분할 하여 한 세트를 만들고, 모든 세트들을 합쳐서 정렬한 배열을 만들어서, 한 세트의 문자열이 정렬한 배열에서 몇 번째 인덱스에 해당되는지를 더해서 최대 값을 정답으로 출력하는 문제이다. 조합을 통해서 문자열을 자를 위치를 지정해 잘라서 문자열을 P와 Plist에 저장해주고 P에서 정렬제거와 중복을 제거한뒤 Plist의 3개씩 각각 점수를 계산하여 최댓 값을 출력해준다. #include #include #include #include using namespace std..
서론 매일매일 구름톤 문제를 풀어나가고 있다. 기초적인 구현 문제가 주를 이루다보니, 이를 어떻게 풀지보단 어떻게 해볼까 라는 생각을 많이 하는 것 같다. 문제를 풀고나서 꾸며지는 캐릭터를 보는 맛도 있어, 다음주는 어떤 모습이 될지 궁금하다. 5일차 이진수 정렬 문제 요약 : 이진수로 변환시 1이 많은 수로 정렬하고 N번째 수를 답하여라(1의 개수가 같을 경우 원래 숫자의 내림차순) 새로 배운 for문 사용 방법을 사용하여 쉽게 반복문을 구현해 보았다. 배열안에 Pair로 원래 숫자와 1의 갯수를 저장하고 정렬함으로써 문제를 풀었다. #include #include #include using namespace std; int main() { int N, K; cin >> N >> K; vector ar..
서론 친구가 구름톤이라는 알고리즘 챌린지를 가져와서 보여주었다. 매일 제공되는 문제를 푸는 방식이 동기 부여에도 의미가 있고, 혜택 또한 제공하여서 참여를 하고 문제를 푸는데, 블로그 일기를 통한 상품도 있어 학습 일기를 써보게 되었다. 2일차 문제 프로젝트 매니징 문제 요약 : 시간을 주고 N개의 X분을 주었을 때 모두 더한 값을 출력하시오. 단순하게 main안에서 해결해도 되지만 최근에 class를 배우게 되어 OOP적으로 풀어보았다. #include using namespace std; class Time { private: int time; int minute; public: Time(int m_time, int m_minute); Time operator+(int min); int gettime..