728x90
반응형
https://www.acmicpc.net/problem/1244
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
1. Logic
남학생은 배로수 바꿔주면 쉽지만 여학생이 문제이다.
여학생이 받은 번호 기준으로 왼쪽 오른쪽이 같으면 바꿔주고 다르면 바꿔주면 안된다. 그래서 while문의 조건을 swit[start] == swit[end]로 잡아줬다.
그리고 20개마다 줄 바꿔주는것을 잘 신경쓰면 된다!
2. Code
#include <bits/stdc++.h>
using namespace std;
int n, m;
bool swit[101];
void manSwitch(int num) {
for(int i = num; i <= n; i += num) {
swit[i] = !swit[i];
}
}
void womanSwitch(int num) {
swit[num] = !swit[num];
int start = num-1;
int end = num+1;
while(swit[start] == swit[end]) {
if(start == 0 || end == n+1) return;
swit[start] = !swit[start];
swit[end] = !swit[end];
start--; end++;
}
return;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> swit[i];
}
cin >> m;
for(int i = 0; i < m; i++) {
int gender, light;
cin >> gender >> light;
if(gender == 1) {
manSwitch(light);
}
else if(gender == 2) {
womanSwitch(light);
}
}
for(int i = 1; i <= n; i++) {
cout << swit[i] << " ";
if(i % 20 == 0) cout << "\n";
}
}
알고리즘 Solve 후 제가 생각한 Logic을 기록하는 개인 공부 블로그입니다.
내용 중 최적화가 가능한 부분등은 언제든지 댓글로 틀린 부분 및 피드백 주시면 공부 및 반영하겠습니다🧐
728x90
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
[백준/Baekjoon] 2468 안전 영역 C++ :: BFS (0) | 2023.11.24 |
---|---|
[백준/Baekjoon] 3015 오아시스 재결합 C++ :: Data Structure (0) | 2023.11.22 |
[백준/Baekjoon] 25757 임스와 함께하는 미니게임 C++ :: Data structure (1) | 2023.11.21 |
[백준/Baekjoon] 4673 셀프 넘버 C++ :: Implementation & Brute force (1) | 2023.11.20 |
[백준/Baekjoon] 진우의 달 여행 17484 C++ :: Brute force & Dynamic programming (1) | 2023.11.18 |