6359. 만취한 상범
2022-02-04
백준 6359번 풀이
이 글은 Obsidian에서 마이그레이션되었으며, 그 과정에서 AI의 도움을 받았습니다. 오류나 누락된 내용이 있다면 댓글로 알려주세요!
문제
풀이
아이디어
복잡하게 생각할 필요 없다. 그냥… 반복문 중첩해서 구구단 구현해서 해당하는 방들 열었다 닫았다 해 주고 마지막까지 열려있는 방의 개수를 구해주면 된다. (설명하는 것 보다 코드를 보는게 더 쉬울 듯 하다.)
생각한 그대로를 코드로 구현할 수 있는지를 묻는 문제인 것 같다.
코드
/*
2022-2-3
6359_만취한 상범
https://www.acmicpc.net/problem/6359
*/
#include <iostream>
using namespace std;
int t, n, cnt;
bool room[101];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> t;
while (t--){
cin >> n;
// 초기화
cnt = 0;
for (int i = 1; i <= n; i++)
room[i] = false; // 잠금
// 열려있으면 잠그기, 잠겨있으면 열기
for(int k = 1; k <= n; k++){
for(int i = 1; i * k <= n; i++){
if (room[i * k])
room[i * k] = false;
else
room[i * k] = true;
}
}
// 열려있는 것 세어주기
for(int i = 1; i <= n; i++){
if (room[i])
cnt++;
}
cout << cnt << '\n';
}
return (0);
}