greedy 8

백준 17615번 볼 모으기 (C++)

문제 링크 : https://www.acmicpc.net/problem/17615 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주 www.acmicpc.net 문제 요약 1. N개의 공이 일렬로 주어집니다. 각 공의 색은 'R' 또는 'B'입니다. 2. 한 번에 한 개의 공을 선택하여 원하는 위치에 삽입할 수 있습니다. 단, 첫 번째로 선택한 공의 색과 동일한 색의 공만 선택하여 이동할 수 있습니다. 3. 최소 이동횟수로 'R'과 'B'공을 같은색끼리 모을 수 있도록 하세요. 핵심 포인트 N의 값이 최대 500..

LeetCode 475. Heaters (C++)

The link : https://leetcode.com/problems/heaters/ Heaters - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 요약 집들의 위치가 적힌 houses배열과 히터들의 위치가 적인 heaters 배열이 있습니다. 모든 집들을 따듯하게 만들기 위한 heater의 최소 반지름을 구하세요. 하나의 반지름은 모든 heaters에게 적용됩니다. 핵심 포인트 집과 배열의 최대 길이는 3만이므로, 무턱대고 for문을 남발하다가는 시..

백준 2138번 전구와 스위치 (C++)

문제 링크 : https://www.acmicpc.net/problem/2138 2138번: 전구와 스위치 N개의 스위치와 N개의 전구가 있다. 각각의 전구는 켜져 있는(1) 상태와 꺼져 있는 (0) 상태 중 하나의 상태를 가진다. i(1 n; cin >> st; cin >> dt; } 2. 다음은 스위치를 키는 함수들입니다. solve(0)일 경우 첫 번째 전구를 키고 시작하며, solve(1)일 경우, 첫 번째 전구를 키지 않습니다. void lightOn(int idx) { // 1 if (idx > 0) temp[idx - 1] = (temp[idx - 1] == '0') ? '1' : '0'; temp[idx] = (temp[idx] == '0') ? '1' : '0'; if (idx < n -..

백준 2212번 센서 (C++)

문제 링크 : https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 k; for(int i=0; i> v[i]; sort(v.begin(),v.end()); 2. ans의 값은 센서 간의 길이차의 최대값으로 초기화한다. 다음으로 센서간의 거리 차를 gap이라는 vector에 저장해준다. ans = v[v.size()-1]-v[0]; for(int j=1; j=n일 경우, 이는 센서의 갯수보다 집중국의 설치 가능 갯수가 더 많음을 뜻한다. 더 계산하지 않고 for문을 종료하면 된다. 만약 3번을 간과할 경우 Runtime Error (out of bound)가 발생하니 주의하자 4. 정답을 출력한다. #include #include #includ..

백준 21758번 꿀 따기 (C++)

문제 링크 : https://www.acmicpc.net/problem/21758 21758번: 꿀 따기 첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다. www.acmicpc.net 이 문제는 풀이방법을 친절하게도 문제에 이미 명시를 해뒀다. 첫 번째 그림은 벌 2개가 왼쪽 끝에, 혹은 오른쪽 끝에 몰려있는 케이스를 설명하고 있으며, 두 번째 그림은 벌 하나는 왼쪽(꿀은 맨 오른쪽)이나 오른쪽 끝(꿀은 맨 왼쪽)에 고정, 다른 벌 하나는 그 사이에 존재하는 것을 설명하고 있으며, 세 번째 그림은 벌 2개가 양쪽 끝에 고정되어있고 꿀은 그 사이를 오고가는 것을 설명한다. 문제 풀이는 다음과 같다. 1. 필요한 변수를 선언하고 값을 입력받는다. int n = 0; cin >> n; unsigned long..

프로그래머스 풍선 터트리기 (C++)

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/68646 코딩테스트 연습 - 풍선 터트리기 [-16,27,65,-2,58,-92,-71,-68,-61,-33] 6 programmers.co.kr 문제 풀이는 다음과 같다. 1. 벡터의 맨 왼쪽값과 맨 오른쪽 값은 무슨일이 있어도 끝까지 살아남을 수 있다. 때문에 정답값은 2부터 카운팅을 시작하게 된다. 2. 이제 a[i]를 기준으로 왼쪽에서 가장 큰 값을Left, 오른쪽에서 가장 큰 값을 Right라고 지칭해보자 Left와 Right은 맨 처음에는 a[0], a[a.size()-1]로 설정이 될 것이다. a[i]의 값이 끝까지 생존하려면 Left와 Right값 중 적어도 1개의 숫자가 a[i]보다..

LeetCode 45. Jump Game II

The link : leetcode.com/problems/jump-game-ii/ Jump Game II - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 풀이는 다음과 같다. 1. 배열의 첫 번째 지점부터 시작된다. 이때 모든 배열의 점프 횟수는 0으로 초기화되어있다. 2 (now) 1 4 4 4 0 0 0 0 0 2. 첫 번째 지점에서 첫 번째 지점 + nums[0]이하까지 점프가 가능하다. 즉, 해당 이하의 점프 횟수는 +1이 된다. 2 (now) ..

(LeetCode) 134. Gas Station

The link : leetcode.com/problems/gas-station/ Gas Station - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 풀이는 다음과 같다. 1. 정답으로 출력할 출발 위치인 index, 출발 위치에 따라 변하는 가스의 충전값 indexsum, 전체 가스 충전값을 구할 totalsum 3가지 변수를 세운다. 2. for문을 gas의 size만큼 돌린다. 3. indexsum의 값은 indexsum += gas[i] - co..