🌞Algorithm/🔥Baekjoon

[Baekjoon] 12927_배수 스위치

뿌야._. 2024. 4. 11. 23:20

Silver IV

문제(출처: 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를 출력한다.