[백준] 12927 배수 스위치

장철현·2024년 1월 27일
0

백준

목록 보기
58/80

링크

12927 배수 스위치

문제

풀이

간단하게 풀었다.
반복문을 처음부터 끝까지 돌리면서 현재 전구가 켜져있으면 해당 인덱스를 더해주면서 반복문을 또 돌려서 풀었다.
1. 모든 전구가 꺼져있는지 확인
2-1. 모든 전구가 꺼져있으면 리턴
2-2. 모든 전구가 꺼져있지 않으면 현재 인덱스값을 더해주면서 전구의 스위치를 변경해준다.(Y -> N, N -> Y)

코드

import java.awt.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.Array;
import java.util.*;
import java.util.List;

public class Main{

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        String input = st.nextToken();

        boolean[] light = new boolean[input.length()+1];
        for(int i=0;i<input.length();i++){
            if(input.charAt(i) == 'Y'){
                light[i+1] = true;
            }
        }

//        System.out.println(Arrays.toString(light));

        if(check(light)) {
            System.out.println(0);
            System.exit(0);
        }

        int count = 0;
        for(int i=1;i<light.length;i++){
            //배수
            int plus = i;

            //꺼져있으면 트루
            if(!light[i]) continue;
//            System.out.println(i);
            while(plus < light.length){
                if(light[plus]){
                    light[plus] = false;
                }else{
                    light[plus] = true;
                }

                plus += i;
            }

            count++;
            if(check(light)) {
//                System.out.println("true");
                break;
            }
        }

        System.out.println(count);

    }

    public static boolean check(boolean[] array){
        for(int i=1;i<array.length;i++) {
//            System.out.println(i);
            if (array[i]) {
                return false;
            }
        }

        return true;
    }

}

0개의 댓글