그리디 3

[백준] 1449. 수리공 항승 풀이

https://www.acmicpc.net/problem/1449 우선 주어진 위치들을 정렬해준다.그 후 첫번째 위치부터 이중반복문을 통해 다음 값들과의 거리를 비교하며 테이프의 길이 안에 드는 지 확인하고, 테이프의 길이내에 벗어나는 값이 나오면 테이프 1개 카운트한다. 그리고 다시 아까 테이프의 길이를 벗어난 값부터 같은 과정을 반복하며 테이프 개수 카운트. 전부 확인 후 개수 출력 C더보기더보기#include #include using namespace std;int main(){ int n, l; scanf("%d %d", &n, &l); int v[n]; for(int i = 0; i Python더보기더보기n, l = map(int, input().split())v = list(..

그리디 2025.02.02

[백준] 1138. 한 줄로 서기 풀이

https://www.acmicpc.net/problem/1138 처음 순서를 1, 2, 3, ... n 으로 정하고 앞의 숫자부터 해당 숫자의 앞에 그 숫자보다 더 큰 값이 몇개 있는지 확인하고 이 개수가 주어진 값(해당 숫자의 앞에 이 숫자보다 더 큰 숫자의 개수)보다 작으면 바로 뒤에 있는 숫자와 swap하면서 주어진 값이 될 때 까지 옮기는 과정을 반복한다. 문제에서 원하는 값의 순서가 될 때까지 반복... C더보기더보기더보기#include void swap(int* a, int*b) {int t = *a; *a = *b; *b = t;}int count(int v, int arr[], int order){ int cnt = 0, i = 0; while(arr[i] != v){cnt +..

그리디 2025.02.02

[백준] 1105. 팔 풀이

https://www.acmicpc.net/problem/1105 처음 시작하는 숫자인 L의 8 개수를 먼저 최솟값으로 지정해둔다.각 자릿수를 검사하다가 8인 자릿수가 나오면 L값에 L과 R의 차 만큼을 더해보아서 해당 자릿수가 8에서 다른 수로 바뀌는지 검사한다. 바뀌면 최솟값을 하나 줄인다.(안바뀌면 숫자가 L에서 R까지 변하는 과정에서 해당 자릿수가 계속 8로 유지됨을 의미)모든 자릿수 검사 후 최종 최솟값을 출력한다. C더보기더보기#include int cnt8(int v){ int cnt = 0; while(v){ if(v % 10 == 8) cnt++; v /= 10; } return cnt;}int main(){ int l, r; scanf..

그리디 2025.02.02