BJ1244 스위치 켜고 끄기

·2022년 4월 17일
0

백준 알고리즘

목록 보기
1/34

https://www.acmicpc.net/problem/1244

  1. 스위치의 갯수와 상태를 입력 받아 배열에 저장해두기.
  2. 스위치가 조작된 횟수와 내용을 입력 받아 해결하기.

조건에 맞게 단순 구현하는 문제.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {
	static BufferedReader br;
	static BufferedWriter bw;
	static StringTokenizer st;
	static boolean[] swc;

	static void onoff(int idx) {
		if (swc[idx])
			swc[idx] = false;
		else
			swc[idx] = true;
	}

	public static void main(String[] args) throws IOException {
		br = new BufferedReader(new InputStreamReader(System.in));
		bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int N = Integer.parseInt(br.readLine());
		st = new StringTokenizer(br.readLine(), " ");
		swc = new boolean[N];
		for (int i = 0; i < N; i++) {
			if (st.nextToken().equals("1")) {
				swc[i] = true;
			}
		}
		int std_N = Integer.parseInt(br.readLine());
		for (int i = 0; i < std_N; i++) {
			st = new StringTokenizer(br.readLine(), " ");
			if (st.nextToken().equals("1")) {
				int tmp = Integer.parseInt(st.nextToken());
				for (int j = 0; j < N; j++) {
					if ((j + 1) % tmp == 0) {
						onoff(j);
					}
				}
			} else {
				int size = 1;
				int tmp = Integer.parseInt(st.nextToken()) - 1;
				onoff(tmp);
				while (tmp - size >= 0 && tmp + size < N && swc[tmp + size] == swc[tmp - size]) {
					onoff(tmp + size);
					onoff(tmp - size++);
				}
			}	
		}
		for (int i = 0; i < N; i++) {
			if (i != 0 && i % 20 == 0) {
				System.out.println();
			}
			if (swc[i])
				System.out.print("1 ");
			else
				System.out.print("0 ");
		}

	}

}
profile
SSAFY 7기

0개의 댓글