https://www.acmicpc.net/problem/1244
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
자바로 입력받을 때 버퍼리더와 스트링토크나이저를 사용하면 시간이 훨씬 적게 걸린다는 점 알아두고 유용하게 써먹자.
package baekjoon;
import java.io.*;
import java.util.StringTokenizer;
public class b1244 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int total = Integer.parseInt(br.readLine());
int switches[] = new int[total];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<total; i++)
switches[i] = Integer.parseInt(st.nextToken());
int stuNum = Integer.parseInt(br.readLine());
for(int i = 0; i < stuNum; i++) {
st = new StringTokenizer(br.readLine());
int gen = Integer.parseInt(st.nextToken());
int num = Integer.parseInt(st.nextToken());
if(gen == 1) {
for(int k = 0; k < total; k++) {
if((k+1) % num == 0) switches[k] = switches[k] == 0? 1: 0;
}
}
else {
switches[num-1] = switches[num-1] == 0? 1: 0;
for(int k = 1; k < total/2; k++) {
if((num - 1 + k) >= total || (num -1 -k) < 0) {
break;
}
if(switches[num - 1 - k] == switches[num -1 + k]) {
switches[num - 1 - k] = switches[num - 1 - k] == 0? 1: 0;
switches[num - 1 + k] = switches[num - 1 + k] == 0? 1: 0;
}
else break;
}
}
}
for(int i = 0; i < total; i++) {
System.out.printf(switches[i] + " ");
if((i+1) % 20 == 0) System.out.println();
}
}
}
'Problems & Solutions' 카테고리의 다른 글
11441 합 구하기 (0) | 2022.07.26 |
---|---|
1058 친구 (0) | 2022.07.25 |
23881 알고리즘 수업 - 선택 정렬 1 (0) | 2022.07.02 |
[1월 15일] 선택정렬 & 문자열 카운트,문자 포함 여부,단어 개수,상수,StringTokenizer,StringBuilder (0) | 2022.01.15 |
[1월 11일] 숫자 각 자릿수 활용 (0) | 2022.01.15 |