코딩테스트 연습 스터디 진행중 입니다. ✍✍✍
Notion : https://www.notion.so/1c911ca6572e4513bd8ed091aa508d67
문제
https://www.acmicpc.net/problem/1244
[나의 풀이]
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
    // 0 <=> 1 변환
    static int one_zero_parser(int one_or_zero) {
        // 2 % (1+1) => result = 0
        // 2 % (0+1) => result = 1
        int result = (one_or_zero + 1) % 2;
        return result;
    }
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;
        int n = Integer.parseInt(br.readLine());
        int[] switches = new int[n];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            switches[i] = Integer.parseInt(st.nextToken());
        }
        // 학생 수
        int std_num = Integer.parseInt(br.readLine());
        // 학생 수 만큼 반복
        for (int i = 0; i < std_num; i++) {
            st = new StringTokenizer(br.readLine());
            // 성별
            int gender = Integer.parseInt(st.nextToken());
            // 번호
            int number = Integer.parseInt(st.nextToken());
            // 남자일 때
            if (gender == 1) {
                for (int j = number; j < n; j += (number)) {
                    switches[j - 1] = one_zero_parser(switches[j - 1]);
                }
            }
            // 여자일 때
            else {
                switches[number - 1] = one_zero_parser(switches[number - 1]);
                // 번호가 중간 이상 or 이하인지 확인
                boolean higher = false;
                if (number > n / 2) {
                    higher = true;
                }
                // 여자의 숫자에서 점점 퍼짐
                int gap = 0;
                // 중간 이상 일때
                if (higher) {
                    while (number + gap < n) {
                        gap++;
                        if (switches[number + gap - 1] == switches[number - gap - 1]) {
                            switches[number + gap - 1] = one_zero_parser(switches[number + gap - 1]);
                            switches[number - gap - 1] = one_zero_parser(switches[number - gap - 1]);
                        } else {
                            break;
                        }
                    }
                }
                // 중간 이하일때
                else {
                    while (number + gap > 1) {
                        gap--;
                        if (switches[number + gap - 1] == switches[number - gap - 1]) {
                            switches[number + gap - 1] = one_zero_parser(switches[number + gap - 1]);
                            switches[number - gap - 1] = one_zero_parser(switches[number - gap - 1]);
                        } else {
                            break;
                        }
                    }
                }
            }
        }
        // 출력
        for (int i = 0; i < n; i++) {
            if (i != 0 && i % 20 == 0) {
                bw.write("\n");
            }
            bw.write(switches[i] + " ");
        }
        bw.flush();
    }
}
[팀원의 풀이]
# coding = utf-8
import sys
input = sys.stdin.readline
n = int(input())
switch = list(map(int, input().split()))
m = int(input())
def changeswitch(idx):
    if switch[idx] == 0:
        switch[idx] = 1
    else:
        switch[idx] = 0
def boy(number):
    idx = number-1
    while idx<n:
        changeswitch(idx)
        idx += number
def girl(number):
    idx = number-1
    changeswitch(idx)
    l, r = idx-1, idx+1
    while l>=0 and r<n and switch[l] == switch[r]:
        changeswitch(l)
        changeswitch(r)
        l -= 1
        r += 1
def sol(gender, number):
    if gender == 1:
        boy(number)
    else:
        girl(number)
def printswitch():
    idx = 0
    for number in switch:
        print(number, end=" ")
        idx += 1
        if idx % 20 == 0:
            print()
for _ in range(m) :
    g, num = map(int, input().split())
    sol(g, num)
printswitch()
입력에 맞는 스위치 On/Off 문제입니다.
문제 자체는 이해하는 데에 어렵진 않았습니다.🐳🐳🐳
하지만 문제에서 요구하는 출력 시의 조건 '스위치의 상태를 1번 스위치에서 시작하여 마지막 스위치까지 한 줄에 20개씩 출력한다. 예를 들어 21번 스위치가 있다면 이 스위치의 상태는 둘째 줄 맨 앞에 출력한다. 켜진 스위치는 1, 꺼진 스위치는 0으로 표시하고, 스위치 상태 사이에 빈칸을 하나씩 둔다.' 를 제대로 읽지 않아서 '출력 형식이 잘못되었습니다' 메세지가 떴고 이 때문에 시간이 오래걸렸습니다..😥😥😥
앞으로 문제에서 요구하는 조건들을 꼼꼼히 읽어보고 풀기 시작하는 습관을 들여보도록 하겠습니다...
감사합니다!!!💐💐💐
⛄