Seren dev's blog
article thumbnail

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

 

1244번: 스위치 켜고 끄기

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

www.acmicpc.net

풀이

스위치의 상태를 입력받고 학생의 성별에 따라 다르게 처리하면 된다.

스위치 배열의 인덱스를 1부터 시작하여 n까지 입력받기로 정했기 때문에 이후 인덱스의 범위를 체크할 때 1부터 n까지 체크해야 한다.

코드

import java.io.*;
import java.util.*;

public class Main {
	
	static int n;
	
	public static void chageSwitchOne(int value, int[] switches) {
		for (int i = value; i <= n; i += value) {
			switches[i] = 1 - switches[i];
		}
	}
	
	public static void chageSwitchTwo(int value, int[] switches) {
		
		switches[value] = 1 - switches[value];
		
		int i, j;
		i = value - 1;
		j = value + 1;
		
		while(i >= 1 && j <= n) {
			if (switches[i] != switches[j])
				break;
			switches[i] = 1 - switches[i];
			switches[j] = 1 - switches[j];
			i--;
			j++;
		}
	}
	
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		n = Integer.parseInt(br.readLine());
		int[] switches = new int[n+1];
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		for (int i = 1; i <= n; i++) {
			switches[i] = Integer.parseInt(st.nextToken());
		}
		
		int k = Integer.parseInt(br.readLine());
		for (int i = 0; i < k; i++) {
			st = new StringTokenizer(br.readLine());
			int key = Integer.parseInt(st.nextToken());
			int value = Integer.parseInt(st.nextToken());
			
			if (key == 1) {
				chageSwitchOne(value, switches);
			}
			else {
				chageSwitchTwo(value, switches);
			}
		}
		

		for (int i = 1; i <= n; i++) {
			System.out.print(switches[i] + " ");
			if (i % 20 == 0) {
				System.out.println();
			}
		}
	}
	
}
728x90
profile

Seren dev's blog

@Seren dev

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!