1244 스위치 켜고 끄기 - 재귀연습

2020. 2. 7. 08:37Learn/Algorithm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        int N = sc.nextInt();
        int swi = 0;
        int mal = 0;
        int number = 0;
        boolean arr[] = new boolean [N+1];
        for(int i = 1; i < N+1;i++) {
            swi= sc.nextInt();
            if(swi == 1)
                arr[i] = true;
        }
        int ip = sc.nextInt();
        for(int i = 0; i < ip; i++) {
            mal = sc.nextInt();
            number = sc.nextInt();
            if(mal == 1) {
                for(int j = number; j  <= N; j+=number) {
                    arr[j] = !arr[j];
                }
            }
            if(mal == 2) {
                arr[number] = !arr[number];
                gswitch(arr,number,0,0,N);
            }
        }
        for(int i = 1; i <= N; i ++) {
            if(i%20 == 1 && i != 1)
                System.out.println();
            if(arr[i] == true)
                System.out.print(1 + " ");
            else
                System.out.print(0 + " ");
        }
        System.out.println();
        for(int i = 0; i < N+1; i++ ) {
            arr[i] = false;
        }
    }
    public static void gswitch(boolean ar[] , int n, int count,int witch,int N) {
        if(n+count > N || n-count < 1)
            return;
        if(ar[n+count] == ar[n-count]) {
            ar[n+count] = !ar[n+count];
            ar[n-count] = !ar[n-count];
            gswitch(ar,n,count+1,witch+1,N);
        }
        return;
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

재귀연습을 위해 재귀를 이용해서 짠 문제.

재귀를 사용하지않고 if문을 사용한다면 훨씬 빠른시간에 풀 수 있겠지만

시간이 넉넉하길래 재귀를 사용했다.

witch라는 변수는 더미데이터로 남게 되었다.(나중에 결국 사용안함)

남자측에서 1부터 배열에 넣기 때문에 N까지 넣어줬어야 했는데 N을 넣지 않아서 틀렸었다.

N을 포함시키자 마자 바로 맞았습니다가 떠서 마음이 아팠다. 내 시간...ㅜㅜ

'Learn > Algorithm' 카테고리의 다른 글

4408 자기방으로 돌아가기  (0) 2020.02.10
14501번 퇴사코드 - DP  (0) 2020.02.07
1228 SWExpert 암호문1  (0) 2020.02.06
6603번 로또 - 백트레킹  (0) 2020.02.06
14888 연산자 끼워넣기 - 완전탐색,백트래킹  (0) 2020.02.06