• 문제 링크
2885번: 초콜릿 식사
학교 근처 편의점에 새 초콜릿이 들어왔다. 이 초콜릿은 막대 모양이고, 각 막대는 정사각형 N개로 이루어져 있다. 초콜릿의 크기(정사각형의 개수)는 항상 2의 제곱 형태이다. 즉, 1, 2, 4, 8, 16, ...
www.acmicpc.net
• 풀이 과정
최소 필요한 정사각형의 개수 k보다 같거나 크며 가장 작은 2의 제곱수를 구하여
이를 초콜릿의 최소 크기로써 n에 대입한다.
이어서 초콜릿의 크기가 k보다 클 경우 반으로 쪼개어 cnt++를 수행하고,
초콜릿을 쪼갠 만큼 필요한 k값에서 제외해야 하므로 k -= n을 수행한다.
k가 0과 같거나 작을 때까지 이러한 과정을 반복하여,
미리 구한 초콜릿의 최소 크기 n과 쪼갠 횟수 cnt를 정답으로써 출력한다.
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int k = Integer.parseInt(br.readLine());
int n = 1;
int cnt = 0;
while (n < k)
n *= 2;
bw.write(n + " ");
while (k > 0) {
if (k >= n)
k -= n;
else {
n /= 2;
cnt++;
}
}
bw.write(String.valueOf(cnt));
bw.flush();
}
}'Problem Solving > Baekjoon' 카테고리의 다른 글
| [백준] 1715 카드 정렬하기 - Greedy / Java (0) | 2022.12.25 |
|---|---|
| [백준] 2785 체인 - Greedy / Java (0) | 2022.12.24 |
| [백준] 2141 우체국 - Greedy / Java (0) | 2022.12.22 |
| [백준] 2212 센서 - Greedy / Java (0) | 2022.12.21 |
| [백준] 2012 등수 매기기 - Greedy / Java (0) | 2022.12.20 |
댓글