yeahzzz
archive
yeahzzz
전체 방문자
오늘
어제
  • 분류 전체보기 (164)
    • Language (41)
      • Python (12)
      • JAVA (21)
      • C&C++ (8)
    • Algorithms (25)
      • programmers (9)
      • study log (16)
    • Problems & Solutions (14)
    • Major (29)
      • Data Structure & Algorithm (14)
      • Linux(Ubuntu) (9)
      • Security (2)
      • Linear Algebra (4)
    • FE (44)
      • Web(HTML5, CSS, JS) (5)
      • React & TS (26)
      • 코딩일기 (10)
    • BE (1)
      • Node.js (1)
    • Pytorch (8)
    • Server (2)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yeahzzz

archive

Problems & Solutions

1244 스위치 켜고 끄기

2022. 7. 25. 20:02

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
    'Problems & Solutions' 카테고리의 다른 글
    • 11441 합 구하기
    • 1058 친구
    • 23881 알고리즘 수업 - 선택 정렬 1
    • [1월 15일] 선택정렬 & 문자열 카운트,문자 포함 여부,단어 개수,상수,StringTokenizer,StringBuilder
    yeahzzz
    yeahzzz

    티스토리툴바