Computer Engineering/알고리즘 테스트

백준[1244]- 스위치 켜고 끄기

말하는호구마 2021. 2. 25. 00:56

진짜 문제는 끝까지 읽어야 한다.

쉬운 문제였지만 출력 조건을 제대로 안읽어서 자꾸 출력 오류가 났었다....

반성반성

 

문제 그대로 구현만하면 되는 쉬운문제다.

https://www.acmicpc.net/problem/1244

 

import java.util.*;

public class Main {
        private static int[] arr;
   public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       int n = Integer.parseInt(sc.nextLine());

       String inputStr = sc.nextLine();
       String[] inputArr = (inputStr).split(" ");

       arr = new int[n+1];
       arr[0]=0;
       for(int i=0;i<n;i++){
           arr[i + 1] = Integer.parseInt(inputArr[i]);
       }

       int stun = Integer.parseInt(sc.nextLine());
       for(int l=0;l<stun;l++){
           String input = sc.nextLine();

           String[] inputarr = input.split(" ");
           int num= Integer.parseInt(inputarr[1]);

           if(inputarr[0].equals("1")) {//남자
               if(num>n)
                   continue;
               for(int i=num;i<=n;i+=num){
                    int temp = arr[i];
                    arr[i]=(temp+1)%2;
               }

           }else{//여자
               int midtemp = arr[num];
               arr[num]=(midtemp+1)%2;
               int start = num;
               int last = num;
               while(start-1 != 0 && last+1 !=arr.length){
                   start--;
                   last++;
                   if(arr[start]!=arr[last]){
                       break;
                   }
                   int starttemp=arr[start];
                   int lasttemp= arr[last];
                   arr[start] = (starttemp+1)%2;
                   arr[last] = (lasttemp+1)%2;
               }

           }
       }


       for(int i=1;i<arr.length;i++){
           System.out.print(arr[i]+" ");
            if(i%20==0)
                System.out.println();
       }


   }



}

 

dfs,bfs공부한 이후로 배열의 index주는 방식이 바뀌었다.

예전에는 꾸역꾸역 index 0부터 채워넣었지만,

이제는 유연하게 1부터 값을 채워넣는 방법을 쓴다. 

훨씬 덜 헷갈린다!!

'Computer Engineering > 알고리즘 테스트' 카테고리의 다른 글

백준[2805] java -나무자르기  (0) 2021.02.25
백준[10773]- 제로 (java)  (0) 2021.02.25
백준[1764]-듣보잡  (0) 2021.02.05
백준[1417]- 국회의원 선거  (0) 2021.02.05
백준[1654]-랜선자르기  (0) 2021.02.05