13458번: 시험 감독
첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)
www.acmicpc.net
엄청 얕봤다가 은근히 고생한 문제...
1. result를 long long으로 안둬서 범위초과로 틀리고
2. 아무생각없이 while문 썼다가 시간초과 뜨꼬..
3. 이런 간단한 문제들도 쫌 다시 풀기 시작해야겠다
4. 난 아직 멀었다
- 처음에 푼 방식
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int map[1000000];
int main()
{
int n;
int b, c;
cin >> n;
long long answer = n;
for (int i = 0; i < n; i++)
{
cin >> map[i];
}
cin >> b >> c;
for (int i = 0; i < n; i++)
{
map[i] -= b;
if (map[i] > 0)
{
int first = map[i];
while (map[i] % c != 0)//나누어 떨어질때 까지
{
map[i]--;
}
if (first == map[i])
answer += map[i] / c;
else
answer += (map[i] / c + 1);
}
}
cout << answer<<endl;
return 0;
}
2. 시간초과때문에 다시 풀기
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int map[1000000];
int main()
{
int n;
int b, c;
cin >> n;
long long answer = n;
for (int i = 0; i < n; i++)
{
cin >> map[i];
}
cin >> b >> c;
for (int i = 0; i < n; i++)
{
map[i] -= b;
if (map[i] > 0)
{
if (map[i] % c == 0)
answer += map[i] / c;
else
answer += map[i] / c + 1;
}
}
cout << answer<<endl;
return 0;
}
'c++ > Baekjoon Online' 카테고리의 다른 글
백준 9205 : 맥주마시면서 걸어가기 c++ (0) | 2020.09.06 |
---|---|
백준 15684 : 사다리 조작 C++ (0) | 2020.09.06 |
백준 10836: 여왕벌 C++ (0) | 2020.09.06 |
백준 10040: 투표 c++ (0) | 2020.09.06 |
백준 1713: 후보 추천하기 c++ (0) | 2020.09.06 |