728x90
문제
https://www.acmicpc.net/problem/1244
구현 문제다.
코드
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
namespace dongsik
{
class Algorithm
{
static void Main(string[] str)
{
int switchCnt = int.Parse(Console.ReadLine()); // 8
int[] onOffInt = Console.ReadLine().Split(" ").Select(int.Parse).ToArray(); // 스위치 켜진 여부
int[] onOffState = new int[switchCnt+1]; // 9
StringBuilder sb = new StringBuilder();
for(int i = 1; i <= switchCnt; i++) // 1 ~ 9 반복
{
onOffState[i] = onOffInt[i-1];
}
int studentCnt = int.Parse(Console.ReadLine()); // 학생 수
for(int i = 0; i < studentCnt; i++) // 학생 수만큼 반복
{
int[] input = Console.ReadLine().Split(" ").Select(int.Parse).ToArray(); // 1, 3
if(input[0] == 1) // 남학생
{
int target = input[1]; // 몇 번 스위치 손댈건지
for(int j = target; j <= switchCnt; j += target)
{
if(onOffState[j] == 1)
{
onOffState[j] = 0;
}
else
{
onOffState[j] = 1;
}
}
}
else // 여학생
{
int target = input[1];
if(onOffState[target] == 1)
{
onOffState[target] = 0;
}
else
{
onOffState[target] = 1;
}
int pre, next;
pre = target - 1;
next = target + 1;
while(pre >= 1 && next < onOffState.Length)
{
if(onOffState[pre] == onOffState[next])
{
if(onOffState[pre] == 1)
{
onOffState[pre] = 0;
onOffState[next] = 0;
}
else
{
onOffState[pre] = 1;
onOffState[next] = 1;
}
pre--;
next++;
}
else
{
break;
}
}
}
}
// 출력
for(int d = 1; d <= switchCnt; d++)
{
sb.Append(onOffState[d] + " ");
if(d % 20 == 0)
{
sb.AppendLine();
}
}
Console.Write(sb);
}
}
}
고민
애석하게도... 무슨 상황이냐면 Console.WriteLine을 안찍거나 for문에다가 적었거나 index에러가 났다.
index에러는 도저히 못찾아서 뤼튼한테 물어봤더니
onOffState에서 에러가 발생했다.
총 입력되는 스위치는 8개
onOffState는 1부터 스위치를 담으려고 9크기를 만들었다.
그러면 onOffState는 1, 2, 3, 4, 5, 6, 7, 8 총 8개를 돌아야하는데, 계속 onOffState.Length로 돌려섴ㅋㅋ index 에러가 발생했다. 너무 기초적인 실수를 해서 너무 한심했다.
'동식이 취업시키기 작전 > 코딩테스트' 카테고리의 다른 글
[백준] 1018 체스판 다시 칠하기(C#) (1) | 2024.01.29 |
---|---|
[백준] 7568 덩치(C#) (1) | 2024.01.29 |
[백준] 1541 잃어버린 괄호(C#) (1) | 2024.01.26 |
[백준] 9461 파도반수열(C#) (0) | 2024.01.26 |
[백준] 1193 분수찾기(C#) (2) | 2024.01.26 |