https://www.acmicpc.net/problem/1244
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
나의 코드
#include <iostream>
#include <vector>
using namespace std;
int N,S;
vector<pair<int,int>> students;
void solution(int *lights) { //남학생 : 1, 여학생 : 2
for (int i = 0; i < S; i++) {
int n = students[i].second;
if (students[i].first == 1) { // 남
for (int i = 1; n*i <= N; i++) {
lights[n * i] = !lights[n * i];
}
}
else {//여
lights[n] = !lights[n];
for (int k = 1; n - k > 0 && n + k <= N; k++) {
if (lights[n - k] == lights[n + k]) {
lights[n- k] = !lights[n - k];
lights[n+ k] = !lights[n + k];
}
else break;
}
}
}
}
int main() {
cin >> N;
int lights[200];
for (int i = 1; i <= N; i++) {
cin >> lights[i];
}
cin >> S;
for (int i = 0; i < S; i++) {
int n1, n2;
cin >> n1 >> n2;
students.push_back({ n1,n2 });
}
solution(lights);
for (int i = 1; i <= N; i++) {
cout << lights[i] << " ";
if (i % 20 == 0) {
cout << endl;
}
}
return 0;
}
문제를 잘 읽자!
조건문의 범위를 잘 생각하자
'전공공부 > 코딩테스트' 카테고리의 다른 글
(c++) 프로그래머스 "JadenCase 문자열 만들기" (0) | 2022.04.24 |
---|---|
(c++) 프로그래머스 "양궁대회" (0) | 2022.04.24 |
(c++) 프로그래머스 "N개의 최소공배수" (0) | 2022.04.22 |
(c++) 프로그래머스 "행렬의 곱셈" (0) | 2022.04.21 |
(c++) 프로그래머스 "파보나치 수" (0) | 2022.04.20 |