๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/12931)
< ๋ ๋ฐฐ ๋ํ๊ธฐ >
๋ฌธ์ ํ์ด
๋ฐฐ์ด B๋ฅผ ์ด์ฉํ์ฌ
1) ๋ฐฐ์ด์ ์๋ ๊ฐ ํ๋๋ฅผ 1 ๊ฐ์์ํค๊ธฐ
2) ๋ฐฐ์ด์ ์๋ ๋ชจ๋ ๊ฐ์ 2๋ก ๋๋๊ธฐ
๋ ๊ฐ์ง ์ฐ์ฐ์ ์ํํ์ฌ ๋ชจ๋ ๊ฐ์ด 0์ธ ๋ฐฐ์ด์ ๋ง๋ ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _12931_ { // ๋ ๋ฐฐ ๋ํ๊ธฐ
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
int arr[] = new int[n];
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int answer = 0;
int zero = 0;
boolean flag = false;
while (zero != n) {
zero = 0;
flag = false;
for (int i = 0; i < n; i++) {
if (arr[i] == 0) {
zero += 1;
}
}
if (zero == n) {
break;
}
for (int i = 0; i < n; i++) {
if (arr[i] % 2 == 1) {
arr[i] -= 1;
answer += 1;
}
}
for (int i = 0; i < n; i++) {
if (arr[i] != 0 && arr[i] % 2 == 0) {
if (!flag) {
flag = true;
answer += 1;
}
arr[i] /= 2;
}
}
}
System.out.println(answer);
}
}
๋ณ์)
n : ๋ฐฐ์ด์ ํฌ๊ธฐ
arr : ๋ฐฐ์ด B ๊ฐ
answer : ์ต์ ์ฐ์ฐ ํ์
zero : ๋ฐฐ์ด์ ๊ฐ์ด 0์ธ ๊ฐ์
๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๋ฐฐ์ด์ ํฌ๊ธฐ๋งํผ ๋ฐฐ์ด B์ ๋ค์ด์๋ ์์๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์ฅํ๋ค. ๋ฐฐ์ด์ ๋ชจ๋ ๊ฐ์ด 0์ผ ๋๊น์ง ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) ๋ฐฐ์ด ์ ์ฒด๋ฅผ ํ์ํ๋ฉฐ ๋ชจ๋ ๊ฐ์ด 0์ธ์ง ํ์ธํ๋ค. 0์ด๋ผ๋ฉด ์ข ๋ฃ
2) 2๋ก ๋๋์ด ๋จ์ด์ง์ง ์๋๋ค๋ฉด 1์ ๊ฐ์์ํค๋ฉฐ answer์ 1 ์ฆ๊ฐ์ํจ๋ค.
3) ๋ฐฐ์ด์ ์๋ ๋ชจ๋ ๊ฐ์ 2๋ก ๋๋๋ฉฐ answer์ 1 ์ฆ๊ฐ์ํจ๋ค.
์ต์ ์ฐ์ฐ ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 8896_๊ฐ์ ๋ฐ์ ๋ณด (0) | 2024.03.20 |
---|---|
[Baekjoon] 1083_์ํธ (0) | 2024.03.19 |
[Baekjoon] 16938_์บ ํ ์ค๋น (1) | 2024.03.15 |
[Baekjoon] 5549_ํ์ฑ ํ์ฌ (0) | 2024.03.14 |
[Baekjoon] 1990_์์์ธํฐ๋ฆฐ๋๋กฌ (0) | 2024.03.13 |