비버놀로지

[BAEKJOON 백준] 1244 스위치 켜고 끄기 본문

ALGORITM/JAVA

[BAEKJOON 백준] 1244 스위치 켜고 끄기

KUNDUZ 2021. 1. 10. 22:44
728x90

www.acmicpc.net/problem/1244

 

1244번: 스위치 켜고 끄기

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

www.acmicpc.net

첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 있다. 셋째 줄에는 학생수가 주어진다. 학생수는 100 이하인 양의 정수이다. 넷째 줄부터 마지막 줄까지 한 줄에 한 학생의 성별, 학생이 받은 수가 주어진다. 남학생은 1로, 여학생은 2로 표시하고, 학생이 받은 수는 스위치 개수 이하인 양의 정수이다. 학생의 성별과 받은 수 사이에 빈칸이 하나씩 있다.

 

스위치의 상태를 1번 스위치에서 시작하여 마지막 스위치까지 한 줄에 20개씩 출력한다. 예를 들어 21번 스위치가 있다면 이 스위치의 상태는 둘째 줄 맨 앞에 출력한다. 켜진 스위치는 1, 꺼진 스위치는 0으로 표시하고, 스위치 상태 사이에 빈칸을 하나씩 둔다.

 

 

그렇게 받은 입력을 이용해서, 여자일때와 남자일때를 나눠서 계산을 했다.

여자가 입력이 되면, 입력받은 숫자를 기준으로 좌우가 같다면 바꿔주고, 다르면 바꾸지 않는다. 그런데 좌우가 다를 때까지 바꿔야 하므로 break도 사용해서 작성했다.

 

그리고 남자의 경우에는 넘버의 배수를 전부 뒤집어 줘야 한다.

 

그렇게 출력을 하면서 한칸의 빈칸을 주면서 출력을 한다.

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		int arr[]=new int[N+1];
		for (int i = 1; i <= N; i++) {
			arr[i]=sc.nextInt();
		}
		int K=sc.nextInt();
		for (int k = 0; k < K; k++) {
			int gender=sc.nextInt();
			int number=sc.nextInt();
			if(gender==1) {
				for (int i = number; i <= N; i+=number) {
					arr[i]=Math.abs(arr[i]-1);
				}
			}else {
				
				arr[number]=Math.abs(arr[number]-1);
				for (int i = 1; i < N; i++) {
					if(number-i>0&&number+i<=N&&arr[number-i]==arr[number+i]) {
						arr[number-i]=Math.abs(arr[number-i]-1);
						arr[number+i]=Math.abs(arr[number+i]-1);
						
					}else {
						break;
					}
				}
			}
		}
		for (int i = 1; i <= N; i++) {
			
			System.out.print(arr[i]+" ");
			if(i%20==0) {
				System.out.println();
			}
		}
	}
}
728x90
Comments