알고리즘/BOJ [BJ]1244. 스위치 켜고 끄기 - BJ S3 1244 스위치 켜고 끄기 문제링크 https://www.acmicpc.net/problem/1244 * 일단 문제를 정독 하고 1시간 이상 반드시 고민이 필요합니다. 동영상 설명 1시간 이상 고민 했지만 아이디어가 떠오르지 않는다면 동영상에서 약간의 힌트를 얻어봅시다. 구독도 누를께요. https://youtu.be/eOSXbcZRAfw 소스보기 동영상 설명을 보고도 전혀 구현이 안된다면 연습 부족입니다. 소스를 보고 작성해 본 후 스스로 백지 상태에서 3번 작성해 볼 의지가 있다면 소스를 살짝 보세요. 꼭 작성할 각오가 되어있습니다. package bj.silver.l2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringReader; import java.util.StringTokenizer; public class BJ_1244_S2_스위치켜고끄기 { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static StringTokenizer tokens; static StringBuilder output; public static void main(String[] args) throws NumberFormatException, IOException { br = new BufferedReader(new StringReader(src)); // 스위치 개수 int N = Integer.parseInt(br.readLine()); boolean[] switches = new boolean[N + 1]; tokens = new StringTokenizer(br.readLine()); // 인덱스가 1번부터 하고 있다 주의!! for (int i = 1; i <= N; i++) { switches[i] = Integer.parseInt(tokens.nextToken()) == 1; } // System.out.println("초기: " + Arrays.toString(switches)); // 학생 수 int S = Integer.parseInt(br.readLine()); for (int i = 0; i < S; i++) { tokens = new StringTokenizer(br.readLine()); int gender = Integer.parseInt(tokens.nextToken()); int idx = Integer.parseInt(tokens.nextToken()); // 남학생이면 배수 위치에 있는 스위치 반전 if (gender == 1) { // 배수만큼 증가하면서 스위치 반전시키기 for (int k = idx; k < switches.length; k += idx) { switches[k] = !switches[k]; } // System.out.println("남자 결과: " + Arrays.toString(switches)); } // 여학생이면 좌우로 대칭되는 지점을 찾아서 그 범위 내의 요소들 반전 else { switches[idx] = !switches[idx]; for (int l = idx - 1, r = idx + 1; l >= 1 && r <= N; l--, r++) { if (switches[l] == switches[r]) { switches[l] = switches[r] = !switches[r]; } else { break; } } } } // System.out.println("최종 결과: " + Arrays.toString(switches)); StringBuilder sb = new StringBuilder(); for (int i = 1; i < switches.length; i++) { sb.append(switches[i] ? 1 : 0).append(" "); // 20글자마다 다음 줄에 표현해야 한다. - 스위치는 100 이하의 정수 if (i % 20 == 0) { sb.append("\n"); } } System.out.println(sb); } private static String src = "8\r\n" + "0 1 0 1 0 0 0 1\r\n" + "2\r\n" + "1 3\r\n" + "2 3"; } 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기모두의 코딩 저작자표시 비영리 변경금지 Contents BJS31244스위치켜고끄기 문제링크 동영상설명 소스보기 당신이 좋아할만한 콘텐츠 [BJ]2211. 네트워크 복구 2022.03.03 [BJ]9370. 미확인도착지 2022.02.28 [BJ]8983 사냥꾼 2022.02.17 [BJ]20061 모노미노도미노2 2022.01.31 댓글 0 + 이전 댓글 더보기