백준 - 1244 : 스위치 켜고 끄기 [자바]
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // 스위치 개수
char[] swi = br.readLine().replace(" " , "").toCharArray(); // 스위치 상태
int n = Integer.parseInt(br.readLine()); //학생 수
//남 : 1 | 여 : 2
//학생 수 n만큼 반복
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int s = Integer.parseInt(st.nextToken()); // 성별
int k = Integer.parseInt(st.nextToken()); // 학생이 받은 수
switch(s) {
case 1: //남학생
//배수 돌아야하니까
// j += 받은 수
for (int j = k; j <= swi.length; j += k) {
change(j-1, swi); // 스위치 - 1 = 배열 인덱스이므로
}
break;
case 2: //여학생
k--; // 스위치 - 1 = 배열 인덱스이므로
change(k, swi);
int num = (k < Math.abs(swi.length-1 - k) ? k : Math.abs(swi.length - k - 1));
if(k > 0 && k < swi.length - 1) {
//기준 + j 비교하니까 1부터
for (int j = 1; j <= num; j++) {
//둘이 같으면
if(swi[k - j] == swi[k + j]) {
change(k-j, swi);
change(k+j, swi);
continue;
}else {
//둘이 다르면 멈추기
break;
}
}
}
}
}
//한 줄에 20개씩 출력
for (int i = 0; i < swi.length; i++) {
System.out.print(swi[i] + " ");
if((i+1) % 20 == 0) {
System.out.println();
}
}
}
//1 -> 0
//0 -> 1
static void change(int i, char[] swi) {
if(swi[i]=='1') swi[i] ='0';
else swi[i] = '1';
}
}
Author And Source
이 문제에 관하여(백준 - 1244 : 스위치 켜고 끄기 [자바]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@heoeunah/백준-1244-스위치-켜고-끄기-자바저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)