1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
Math.abs() 메소드 활용 1->0 & 0->1로 바꿈
|0 -1| =| -1| -> 1
|1 -1| = |0 | -> 0
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
//System.setIn(new FileInputStream("input/switch.txt"));
Scanner sc = new Scanner(System.in);
int switchNum = sc.nextInt();
int [ ] arr = new int [switchNum];
for (int i = 0; i < switchNum; i++) {
arr[i] = sc.nextInt();
}
int studentNum = sc.nextInt();
for (int i = 0; i < studentNum; i++) {
int sex = sc.nextInt();
//남학생일경우 자신이 받은수의 배수의 번호를 반대로 바꿈.
if(sex==1) {
int num = sc.nextInt();
for (int j = 1; j <= arr.length; j++) {
if(j%num==0) {
arr[j-1] = Math.abs(arr[j-1]-1);
}
}
}//여학생일경우 앞뒤체크하여 같으면 변경. 마지막엔 자신을 변경
else {
int num2= sc.nextInt()-1;//여학생의 배열 인덱스
boolean flag = true;
int d=1;
while(flag) {
if(num2-d>=0&&num2+d<switchNum&&arr[num2-d]==arr[num2+d]) {
arr[num2-d] = Math.abs(arr[num2-d]-1);
arr[num2+d] = Math.abs(arr[num2+d]-1);
d++;
}
else {
flag = false;
}
}
arr[num2]= Math.abs(arr[num2]-1);
}
//학생수만큼 반복
}
int cnt=0;
for (int i = 0; i < arr.length; i++) {
if(cnt>0&&cnt%20==0) System.out.println();
System.out.print(arr[i]+" ");
cnt++;
}
}
}
출력형식 때문에 계속 틀렸었다.
출력시 20개가 넘어가면 줄바꿈 해야함.
조건에 cnt%20 ==0 에 cnt>0도 추가해야 0번째일때부터 줄바꿈이 일어나지 않음.
'Problem Solving > BOJ' 카테고리의 다른 글
백준 - 8320 직사각형을 만드는 방법 (0) | 2021.02.07 |
---|---|
백준- 15652번 N과M (4) (0) | 2021.02.07 |
백준- 15651번 N과M (3) (0) | 2021.02.07 |
백준 -15650번 N과M(2) (0) | 2021.02.07 |
백준 - 15649 N과 M(1) (0) | 2021.02.07 |
댓글