본문 바로가기

ALGORITHM

백준 1244 스위치 켜고 끄기 (Java)

1. 문제 링크

 

1244번: 스위치 켜고 끄기

첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩

www.acmicpc.net

 

2. 문제 및 입출력예제

 

3. 문제 풀이

문제에 나와있는 내용을 차근차근 풀면 된다.

주의할 점은 스위치가 1번부터 시작된다는 것이다.

또한 20개씩 나눠서 출력해야 한다는 점도 꼭 보고 제출합시다..

 

4. 코드

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	private static int[] btn;
	public static void main(String[] args) throws Exception {
		StringBuilder sb = new StringBuilder();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		btn = new int[N+1];
		String[] split = br.readLine().split(" ");
		for (int i = 1; i < N+1; i++) {
			btn[i] = Integer.parseInt(split[i-1]);
		}
		int stu = Integer.parseInt(br.readLine());
		for (int a = 0; a < stu; a++) {
			split = br.readLine().split(" ");
			int gender = Integer.parseInt(split[0]);
			int have = Integer.parseInt(split[1]);
			if (gender == 1) { // 남
				for (int j = have; j < N+1; j+=have) {
					change(j);
				}
			} 
			else { // 여
				change(have);
				int temp = 1;
				while (true) {
					if ((have - temp) >= 1 && (have + temp) <= N) {
						if (btn[have - temp] == btn[have + temp]) {
							change(have - temp);
							change(have + temp);
							temp++;
						}
						else {
							break;
						}
					} 
					else {
						break;
					}

				}
			}
		}
		for(int i=1;i<N+1;i++) {
			sb.append(btn[i]+" ");
			if((i)%20 == 0) {
				sb.append("\n");
			}
		}
		System.out.println(sb);
	}

	private static void change(int j) {
		if (btn[j] == 0) {
			btn[j] = 1;
		} else {
			btn[j] = 0;
		}
	}
}

 

'ALGORITHM' 카테고리의 다른 글

백준 7576 토마토 (Java)  (0) 2023.02.13
백준 14501 퇴사 (Java)  (0) 2023.02.12
백준 15650 N과 M (2) (Java)  (0) 2023.02.10
백준 15649 N과 M (Java)  (0) 2023.02.09
백준 9095 1, 2, 3 더하기 (Java)  (0) 2023.02.08