백준
[C++] 백준 | 19590번 비드맨
골드일
2023. 2. 6. 03:22
19590번: 비드맨
구슬을 엄청 좋아하는 비드맨이 있다. 구슬만 보면 갖고 싶어 하는 비드맨은 오늘도 갖고 싶은 구슬을 발견했다. 그러나 비드맨은 현재 구슬을 너무 많이 갖고 있기 때문에 더 이상 구슬을 가질
www.acmicpc.net
재밌는 그리디 문제이다.
종류가 다른 구슬을 2개씩 부딪혀 깰 수 있다고 할 때,
최소한의 구슬을 남기는 문제다.
25635번: 자유 이용권
자유 이용권은 놀이공원의 모든 놀이기구를 횟수의 제한 없이 마음껏 이용할 수 있는 이용권이다. 준원이는 ANA 놀이공원의 자유 이용권을 구매했고, 최대한 많이 놀이기구를 이용할 생각이다.
www.acmicpc.net
비슷한 문제로 자유 이용권 문제가 있다.
풀이 방법은,
가장 많은 개수의 구슬을 n, 나머지 총합을 m으로 뒀을 때
1. n > m 이라면 무조건 n - m 의 구슬은 남고, 나머지는 깰 수 있다.
2. n = m 이라면 0개의 구슬만 남는다.
3. n < m 이라면 전체 구슬이 홀수라면 1개가, 아니라면 0개가 남는다.
따라서 아래와 같이 작성할 수 있다.
#include <iostream>
#include <algorithm>
using namespace std;
long long n, m,k,arr[100001];
int main() {
ios::sync_with_stdio(0);cin.tie(0);
cin>>k;
for(int i = 0; i < k; i++) cin>>arr[i];
sort(arr, arr + k);
n = arr[k - 1]; //최댓값
for(int i = 0; i < k - 1; i++) {
m += arr[i]; //나머지
}
if(n > m) cout<< n - m;
else {
if((n + m) % 2) cout<<1;
else cout<<0;
}
}
추가적으로
27311번: 치노의 라떼 아트 (Easy)
각 테스트 케이스에 대해, 주어진 라떼 아트가 하트 모양이면 1, 아니면 0을 한 줄에 하나씩 출력한다.
www.acmicpc.net
이 문제를 풀지 못해서 너무 스트레스 받는다..
실버 2의 마인크래프트를 어떻게 푸는지 모를 때의 기분과 같다.