문제(출처: https://www.acmicpc.net/problem/12927)
< 배수 스위치 >
문제 풀이
앞에서부터 전구를 끈다.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class _12927_ { // 배수 스위치
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = bf.readLine();
boolean[] arr = new boolean[str.length() + 1];
for (int i = 1; i <= str.length(); i++) {
if (str.charAt(i - 1) == 'Y') {
arr[i] = true;
}
}
int result = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i]) {
result += 1;
int idx = i;
while (idx < arr.length) {
arr[idx] = !arr[idx];
idx += i;
}
}
}
System.out.println(result);
}
}
변수)
str : 전구 상태
arr : 전구 상태 boolean 값 (true: 켜짐, false: 꺼짐)
result : 모든 전구를 끄기 위해 눌러야 하는 스위치 수
전구의 상태를 입력받는다. 전구의 상태를 보며 전구가 켜져 있다면 배열 값을 true, 꺼져있다면 false로 저장한다. 배열을 앞에서부터 탐색하면서 값이 true이면 result+1을 한 후 배수의 값을 반대 값으로 바꿔준다.
최종 모든 전구를 끄기 위해서 눌러야 하는 스위치 수 result를 출력한다.
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 2697_다음수 구하기 (0) | 2024.04.15 |
---|---|
[Baekjoon] 2149_암호 해독 (0) | 2024.04.12 |
[Baekjoon] 3060_욕심쟁이 돼지 (1) | 2024.04.10 |
[Baekjoon] 28471_W키가 빠진 성원이 (0) | 2024.04.09 |
[Baekjoon] 1347_미로 만들기 (0) | 2024.04.05 |