문제 링크 : https://www.acmicpc.net/problem/14891
소스 코드
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { static ArrayList<Integer> ar[] = new ArrayList[5]; static int hb[] = new int[5]; public static void rotate(int num, int d) { int tmp; if(d>0) { // 시계 tmp = ar[num].get(7); ar[num].remove(7); ar[num].add(0, tmp); } else if (d<0){ // 반시계 tmp = ar[num].get(0); ar[num].remove(0); ar[num].add(tmp); } } public static void solve(int num, int d) { Arrays.fill(hb, 0); hb[num] = d; //오른쪽 봄 for(int i = num; i<4; i++) { if((ar[i].get(2) + ar[i+1].get(6))==1) hb[i+1] = hb[i]*-1; else break; } //왼쪽봄 for(int i=num; i>1; i--) { if((ar[i].get(6) + ar[i-1].get(2))==1) hb[i-1] = hb[i]*-1; else break; } //회전시킴 for(int i=1; i<5; i++) { rotate(i, hb[i]); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int i=0; i<5; i++) { ar[i] = new ArrayList<Integer>(); if(i==0) continue; String s = sc.nextLine(); for(int j=0; j<8; j++) { ar[i].add(s.charAt(j) - '0'); } } int k = sc.nextInt(); int num, d; for(int j=0; j<k; j++) { num = sc.nextInt(); d = sc.nextInt(); solve(num, d); } int ans=0; for(int i=1; i<5; i++) { if(ar[i].get(0)==1) { int hapsu = 1; for(int j=1; j<i; j++) { hapsu *=2; } ans += hapsu; } } System.out.println(ans); } } | cs |
'Algorithm > 백준' 카테고리의 다른 글
백준 16235번 나무재테크 (0) | 2019.05.03 |
---|---|
백준 15685번 드래곤 커브 (0) | 2019.05.02 |
백준 15683번 감시 (0) | 2019.04.30 |
백준 14889번 스타트와 링크 (0) | 2019.04.28 |
백준 14890번 경사로 (0) | 2019.04.28 |