슈콩

[BOJ] 14891 톱니바퀴 본문

Algorithms/Baekjoon

[BOJ] 14891 톱니바퀴

shukong 2025. 12. 1. 23:54

 

 

[문제]

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

 

 

[소스 코드]

import java.io.*;
import java.util.*;

public class Main {
	static int[][] gear;
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		gear = new int[5][8];
		for(int i=1;i<=4;i++) {
			String s = br.readLine();
			for(int j=0;j<8;j++) gear[i][j] = s.charAt(j) - '0';
		}
		int k = Integer.parseInt(br.readLine());
		for(int i=0;i<k;i++) {
			st = new StringTokenizer(br.readLine());
			int num = Integer.parseInt(st.nextToken());
			int dir = Integer.parseInt(st.nextToken());
			if(num==1) {
				if(gear[1][2]!=gear[2][6]) {
					if(gear[2][2]!=gear[3][6]) {
						if(gear[3][2]!=gear[4][6]) rotate(4,dir*-1);
						rotate(3,dir);
					}
					rotate(2,dir*-1);
				}
				rotate(1,dir);
			}
			else if(num==2) {
				if(gear[1][2]!=gear[2][6]) {
					rotate(1,dir*-1);
				}
				if(gear[2][2]!=gear[3][6]) {
					if(gear[3][2]!=gear[4][6]) rotate(4,dir);
					rotate(3,dir*-1);
				}
				rotate(2,dir);
			}
			else if(num==3) {
				if(gear[3][2]!=gear[4][6]) rotate(4,dir*-1);
				if(gear[2][2]!=gear[3][6]) {
					if(gear[1][2]!=gear[2][6]) rotate(1,dir);
					rotate(2,dir*-1);
				}
				rotate(3,dir);
			}
			else {
				if(gear[3][2]!=gear[4][6]) {
					if(gear[2][2]!=gear[3][6]) {
						if(gear[1][2]!=gear[2][6]) rotate(1,dir*-1);
						rotate(2,dir);
					}
					rotate(3,dir*-1);
				}
				rotate(4,dir);
			}
		}
		int result = 0;
		for(int i=1;i<=4;i++) {
			if(gear[i][0]==1) result += Math.pow(2,i-1);
		}
		System.out.println(result);
	}
	private static void rotate(int num,int dir) {
		int[] temp = new int[8];
		temp = gear[num].clone();
		if(dir==1) {
			int tmp = gear[num][7];
			for(int i=1;i<=7;i++) {
				gear[num][i] = temp[i-1];
			}
			gear[num][0] = tmp;
		}
		if(dir==-1) {
			int tmp = gear[num][0];
			for(int i=0;i<7;i++) {
				gear[num][i] = temp[i+1];
			}
			gear[num][7] = tmp;
		}
	}
}

'Algorithms > Baekjoon' 카테고리의 다른 글

[BOJ] 15684 사다리 조작  (0) 2025.12.02
[BOJ] 15683 감시  (0) 2025.12.02
[BOJ] 14890 경사로  (0) 2025.12.01
[BOJ] 14889 스타트와 링크  (0) 2025.12.01
[BOJ] 14888 연산자 끼워넣기  (0) 2025.12.01