티스토리 뷰
https://www.acmicpc.net/problem/1052
1052번: 물병
지민이는 N개의 물병을 가지고 있다. 각 물병에는 물을 무한대로 부을 수 있다. 처음에 모든 물병에는 물이 1리터씩 들어있다. 지민이는 이 물병을 또 다른 장소로 옮기려고 한다. 지민이는 한 번
www.acmicpc.net
이 문제는 처음에 k=1일 경우가 아니면 (2 <= k < n) 무조건 물통을 하나도 사지않고 옮길수 있다고 생각했다.
또한 n이 2의n승이라면 하나의 물병으로 합칠수 있으므로 k가 1이 아니라면 그냥 k보다 큰 2의n승의 숫자가 될때까지 물통을 사면된다고 생각했는데 답이 아니었다.
#include <iostream>
using namespace std;
int n,k;
int main()
{
cin >> n >> k;
// n이 k보다 작으면 그냥 0 출력후 종료
if(n <= k)
{
cout << 0;
return 0;
}
int ans = 0;
while(true)
{
int cnt = 0;
int temp = n;
while(temp)
{
// 남는 물병이 있음 (합쳐지지 않은 물병)
if(temp % 2)
cnt++;
temp /= 2;
}
if(cnt <= k)
break;
n++;
ans++;
}
cout << ans;
}
'PS' 카테고리의 다른 글
백준 13413. 오셀로 재배치 (0) | 2021.08.23 |
---|---|
백준 19939. 박 터뜨리기 (0) | 2021.08.23 |
백준 11508. 2+1 세일 (0) | 2021.08.20 |
백준 2138. 전구와 스위치 (0) | 2021.08.20 |
백준 16435. 스네이크버드 (0) | 2021.08.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- two pointer
- C++
- Implementation
- Tree
- Brute Force
- BFS
- Spring
- C
- 자료구조
- Dijkstra
- 이분탐색
- DP
- db
- floyd warshall
- Unity
- recursion
- permutation
- Kruskal
- Stack
- dfs
- graph
- CSS
- greedy
- 재귀
- Python
- 조합
- priority queue
- back tracking
- MVC
- binary search
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함