728x90
문제
강호는 전구 N개를 가지고 있다. 전구는 1번부터 N번까지 번호가 매겨져 있으며, 일렬로 놓여져 있다. 전구는 켜져있거나 꺼져있다.
강호는 모든 전구를 끄려고 한다. 강호는 전구를 켜고 끌 수 있는 스위치 N개를 가지고 있고, 스위치도 1번부터 N번까지 번호가 매겨져 있다. i번 스위치는 i의 배수 번호를 가지는 전구의 상태를 모두 반전시킨다.
현재 전구의 상태가 주어졌을 때, 모든 전구를 끄기 위해서 스위치를 몇 번 눌러야하는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 전구의 상태가 1번 전구부터 차례대로 주어진다. Y는 전구가 켜 있는 경우, N은 전구가 꺼져있는 경우이다. 전구의 개수는 1보다 크거나 같고 1,000보다 작거나 같은 자연수이다.
출력
모든 전구를 끄기 위해서 스위치를 몇 번 눌러야 하는지 출력한다. 만약, 모든 전구를 끌 수 없다면 -1을 출력한다.
풀이
가장 작은 번호의 전구부터 켜야지 마지막에 큰번호의 전구가 하나 남았을때 그 전구만 전원을 끌 수 있다.
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str=sc.nextLine();
boolean [] sw = new boolean[str.length()+1];
for(int i=0;i<str.length();i++)
if(str.charAt(i)=='Y')
sw[i+1]=true;
int cnt=0;
for(int i=1;i<=str.length();i++) {
if(sw[i]) {
cnt++;
for(int j=i;j<=str.length();j+=i)
sw[j]=!sw[j];
}
}
for(int i=1;i<=str.length();i++)
if(sw[i]) {
System.out.println("-1");
return;
}
System.out.println(cnt);
}
}
728x90
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
Baekjoon 10157 자리배정 JAVA (0) | 2022.02.13 |
---|---|
Baekjoon 18108 1998년생인 내가 태국에서는 2541년생?! JAVA (0) | 2022.02.13 |
Baekjoon 2941 크로아티아 알파벳 JAVA (0) | 2022.02.13 |
Baekjoon 2477 참외밭 JAVA (0) | 2022.02.11 |
Baekjoon 2635 수 이어가기 JAVA (0) | 2022.02.11 |
댓글