티스토리 뷰

1244. 스위치 켜고 끄기

www.acmicpc.net/problem/1244

 

1244번: 스위치 켜고 끄기

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

www.acmicpc.net

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

public class Main_BJ_1244_스위치켜고끄기 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int SN = sc.nextInt();
		int[] arr = new int[SN+1];
		
		for(int i=1; i<SN+1; i++) {
			arr[i] = sc.nextInt();
		}
		
		int N = sc.nextInt(); // 학생 수
		
		for (int si=1; si<=N; si++) {
			int g = sc.nextInt(); // 성별
			int num = sc.nextInt(); // 스위치 번호
			
			if (g == 1) {
				// 남학생
				for (int i=num; i<=(arr.length-1); i+=num) {
					arr[i] = (arr[i]==1) ? 0 : 1;
				}
			} else if (g == 2) {
				// 여학생
				arr[num] = (arr[num]==1) ? 0 : 1;
				for (int i=1; i<(arr.length-1); i++) {
					int l = num - i;
					int r = num + i;
					
					if (l<1 || r > (arr.length-1) || arr[l]!=arr[r]) 
						break;
					else {
						arr[l] = (arr[l]==1) ? 0 : 1;
						arr[r] = (arr[r]==1) ? 0 : 1;
					}
				} 
				
			}
				
		}
			
		// 출력
		for (int i=1; i<arr.length; i++) {
			System.out.print(arr[i] + " ");
			if (i%20 == 0) System.out.println();
		}
		
		sc.close();
	} // main

}
import java.io.*;
import java.util.*;
// 210226

public class Main_BJ_1244_스위치켜고끄기 {
	static int[] arr;
	static void flip(int idx) {
		if(arr[idx]==1) arr[idx]=0;
		else arr[idx]=1;
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt(); // 스위치 개수
		arr = new int[N+1];
		for(int i=0; i<N; i++) {
			arr[i+1] = sc.nextInt();
		}
		int SN = sc.nextInt();
	
		for(int i=0; i<SN; i++) {
			int gender = sc.nextInt(); // 남 1 여 2
			int num = sc.nextInt(); 
			if(gender==1) {
				for(int j=1; j<=N; j++) {
					if(j%num==0) flip(j);
				}
			} else if(gender==2) {
				flip(num);
				for(int k=1; k<=N; k++) {
					int l=num-k, r=num+k;
					if(l>=1&&r<=N&&arr[l]==arr[r]) {
						flip(l); flip(r);
					} else {
						break;
					}
				}
			}
		}
		StringBuilder sb = new StringBuilder();
		for(int i=1; i<arr.length; i++) {
			sb.append(arr[i] + " ");
			if(i%20==0) sb.append("\n");
		}
		System.out.println(sb.toString());
		
		sc.close();
	} // main
}

 

 

출력 형식이 자꾸 잘못되었대서 보니까 스위치가 20개가 넘어가면 개행을 넣어야 하더라

'코딩테스트 > 백준' 카테고리의 다른 글

[BJ] 8320. 직사각형을 만드는 방법  (0) 2021.02.26
[BJ] 17413. 단어 뒤집기2  (0) 2021.02.26
[BJ] 10158. 개미  (0) 2021.02.25
[BJ] 13300번: 방 배정  (0) 2021.02.22
[BJ] 2108. 통계학  (0) 2021.02.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함