반응형 정렬3 [cpp 알고리즘] 백준 2170 선 긋기 [백준] 2170 선 긋기 cpp(c++) 풀이알고리즘: 정렬, 스위핑https://www.acmicpc.net/problem/2170문제 요약- 선을 그을 때에는 자의 한 점에서 다른 한 점까지 긋게 된다.- 이미 선이 있는 위치에 겹쳐서 그릴 수도 있는데, 여러 번 그은 곳과 한 번 그은 곳의 차이를 구별할 수 없다. (=> 선이 여러번 그련진 곳은 한 번씩만 계산한다.)- 이와 같은 식으로 선을 그었을 때, 그려진 선들의 총 길이를 구하는 프로그램 작성하기.풀이 정리- vector> 를 활용하여 각 점의 (시작점, 끝점)을 저장하였다. - 그리고 선을 그을 때, 인접한 두 선이 이어지는지 확인하기 위해 sort 를 활용해 정렬했다. - 이전 선의 시작점 인 경우에 이어질 수 있다고 판단했다. (아래.. 2024. 11. 11. [cpp 알고리즘] 백준 20300 서강근육맨 [백준] 20300 서강근육맨 cpp 풀이알고리즘: 그리디 알고리즘, 정렬https://www.acmicpc.net/problem/20300 문제 요약- 헬스장에 있는 N개의 운동기구 중에 하루에 2개의 운동기구로 운동한다. 홀수 개의 운동기구가 있는 경우에는 마지막 PT를 받을 때는 운동 기구를 하나만 사용한다.- 이 때 운동기구마다 근손실이 일어나는 정도가 다르다. PT를 한 번 받을 때의 근손실 정도가 M을 넘지 않도록 하고 싶다. 이때, M의 최솟값을 구하는 문제이다. (운동기구를 두 개 사용해서 PT를 받을 때의 근손실 정도는 두 운동기구의 근손실 정도의 합이다.)풀이 정리(1) 입력받은 근손실 정도를 (오름차순으로) 정렬한다. (2-1) 운동기구 개수 N이 홀수인 경우에는, 근손실 정도가 최댓.. 2024. 7. 9. [cpp 알고리즘] 백준 1744 수 묶기 [백준] 1744 수 묶기 풀이 그리디 알고리즘, 정렬, 많은 조건 분기 문제 출처: https://www.acmicpc.net/problem/1744 문제 요약 - 길이가 N인 수열이 주어졌을 때, 두 수를 곱하거나 그대로 둘 수 있다. 이 수들을 모두 더한 값들 중 최댓값을 구하면 된다. 풀이 정리 1. 일단 오름차순으로 정렬한다. 2. 숫자 1을 기준으로 3가지 경우로 나뉘어진다. (1) 1보다 작은, 0이거나 음수인 경우 -> 앞쪽(작은 수)부터 두 수를 곱해서 최종 결과 값에 더하면 된다. (2) 1인 경우 -> 곱하는 데 사용하지 않고, 더하면 된다. (3) 1보다 큰 양수인 경우 -> 뒤쪽(큰 수)부터 두 수를 곱해서 최종 결과 값에 더하면 된다. 3. (1)의 경우 혹은 (3)의 경우가 홀.. 2023. 11. 11. 이전 1 다음 반응형