알고리즘/SWEA [SWEA]모의 4013 특이한 자석 - SWEA 모의 4013 특이한 자석 이 문제는 백준 G5 14891 톱니바퀴와 같은 문제입니다. 문제링크 SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 14891번: 톱니바퀴 (acmicpc.net) 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net * 일단 문제를 정독 하고 1시간 이상 반드시 고민이 필요합니다. 동영상 설명 1시간 이상 고민 했지만 아이디어가 떠오르지 않는다면 동영상에서 약간의 힌트를 얻어봅시다. 구독도 누를께요. SWEA 모의 4013 특이한자석 HD 1080p HD 1080p - YouTube 소스보기 동영상 설명을 보고도 전혀 구현이 안된다면 연습 부족입니다. 소스를 보고 작성해 본 후 스스로 백지 상태에서 3번 작성해 볼 의지가 있다면 소스를 살짝 보세요. 꼭 작성할 각오가 되어있습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringReader; import java.util.LinkedList; import java.util.List; import java.util.StringTokenizer; public class Main { static BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); static StringBuilder output = new StringBuilder(); static StringTokenizer tokens = null; static int T, K; private static List<Integer>[] gears = new List[5]; public static void main(String[] args) throws IOException { T = Integer.parseInt(input.readLine()); for (int t = 1; t <= T; t++) { K = Integer.parseInt(input.readLine()); for (int i = 1; i < gears.length; i++) { gears[i] = new LinkedList<>(); tokens = new StringTokenizer(input.readLine()); while (tokens.hasMoreTokens()) { gears[i].add(Integer.parseInt(tokens.nextToken())); } } for (int k = 0; k < K; k++) { tokens = new StringTokenizer(input.readLine(), " "); int gearNo = Integer.parseInt(tokens.nextToken()); int dir = Integer.parseInt(tokens.nextToken()); int[] turnMap = new int[5]; turnMap[gearNo] = dir; effectRight(gearNo, dir, turnMap); effectLeft(gearNo, dir, turnMap); for(int i=1; i<turnMap.length; i++) { int turnDir = turnMap[i]; if(turnDir==1) { gears[i].add(0, gears[i].remove(7)); } else if(turnDir==-1) { gears[i].add(gears[i].remove(0)); } } } int answer = 0; for (int i = 1; i < gears.length; i++) { answer += gears[i].get(0) * Math.pow(2, i - 1); } output.append("#").append(t).append(" ").append(answer).append("\n"); } System.out.println(output); } private static void effectRight(int gearNo, int dir, int[] turnMap) { if (gearNo == 4) { return; } if (gears[gearNo].get(2) != gears[gearNo + 1].get(6)) { turnMap[gearNo + 1] = dir * -1; effectRight(gearNo + 1, dir * -1, turnMap); } } private static void effectLeft(int gearNo, int dir, int[] turnMap) { if (gearNo == 1) { return; } if (gears[gearNo].get(6) != gears[gearNo - 1].get(2)) { turnMap[gearNo - 1] = dir * -1; effectLeft(gearNo - 1, dir * -1, turnMap); } } } 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기모두의 코딩 저작자표시 비영리 변경금지 Contents SWEA모의4013특이한자석 문제링크 동영상설명 소스보기 당신이 좋아할만한 콘텐츠 [SWEA]7964. 부먹왕국의 차원관문 2022.02.22 [SWEA]D4 8659 GCD 2022.02.15 [SWEA]SWEA_D4_5604_구간합 2021.09.29 SWEA D4 5432 쇠막대기자르기 2021.08.09 댓글 0 + 이전 댓글 더보기