-
Java 1244 스위치 켜고 끄기PS 2023. 7. 19. 15:45
https://www.acmicpc.net/problem/1244
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
풀이:
1. 스위치의 상태를 입력받는다.
2. 학생의 성별, 숫자를 담을 클래스와 학생 배열을 생성하고 입력받는다.
3. 학생의 성별이 남자라면 for문을 통하여 배수의 값을 업데이트 해주고 여자일 경우에는 좌우로 대칭한 값을 업데이트 해준다.
문제에서 제시한 조건만 잘 지켜주면 막히는 부분없이 풀 수 있는 문제였던 거 같습니다. 라고 생각했는데 출력형식이 계속 잘못됐다고 해서 확인하니 출력 조건 중에 20번째 스위치 이후로는 다음 줄에 출력하란 부분이 있어서 나머지 연산을 통해서 20번째 스위치마다 줄바꿈을 해주어 구현하였습니다.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); StringTokenizer st = new StringTokenizer(br.readLine()); StringBuilder sb = new StringBuilder(); int[] map = new int[n+1]; for(int i = 1; i <= n; i++){ map[i] = Integer.parseInt(st.nextToken()); } int m = Integer.parseInt(br.readLine()); Student[] students = new Student[m]; for(int i = 0; i < m; i++){ st = new StringTokenizer(br.readLine()); students[i] = new Student(Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken())); } for(int i = 0; i < m; i++){ int gender = students[i].gender; int num = students[i].num; if(gender == 1){ for(int j = num; j <= n; j+=num){ map[j] = (map[j]+1)%2; } } if(gender == 2){ map[num] = (map[num]+1)%2; int depth = 1; while(true){ if(num + depth <= n && num - depth > 0){ if(map[num + depth] == map[num - depth]){ map[num+depth] = (map[num+depth]+1)%2; map[num-depth] = (map[num-depth]+1)%2; depth++; }else { break; } }else { break; } } } } for(int i = 1; i <= n; i++){ if(i == n){ sb.append(map[i]); }else if(i % 20 == 0){ sb.append(map[i]).append("\n"); }else { sb.append(map[i]).append(" "); } } System.out.println(sb); } static class Student { int gender; int num; public Student(int gender, int num){ this.gender = gender; this.num = num; } } }
'PS' 카테고리의 다른 글
Java 1926 그림 (0) 2023.07.25 Java 1138 한 줄로 서기 (0) 2023.07.21 Java 20125 쿠키의 신체 측정 (0) 2023.07.19 Java 25757 임스와 함께하는 미니게임 (0) 2023.07.19 Java 1389 케빈 베이컨의 6단계 법칙 (0) 2023.07.05