13458: 시험 감독
C++ 1st try
#include <iostream>
#include <vector>
using namespace std;
int N, B, C;
vector<int> A;
long long ret;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
for (int i = 0; i < N; i++) {
int tmp;
cin >> tmp;
A.push_back(tmp);
}
cin >> B >> C;
for (int i = 0; i < N; i++) {
if (A[i] <= B) {
ret += 1;
} else {
if ((A[i] - B) % C > 0)
ret += ((A[i] - B) / C) + 2;
else
ret += ((A[i] - B) / C) + 1;
}
}
cout << ret << "\n";
}
C++ 2nd try
#include <iostream>
using namespace std;
int N, B, C;
long long ret;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
int A[N];
for (int i = 0; i < N; i++) {
cin >> A[i];
}
cin >> B >> C;
for (int i = 0; i < N; i++) {
if (A[i] <= B) {
ret += 1;
} else {
if ((A[i] - B) % C > 0)
ret += ((A[i] - B) / C) + 2;
else
ret += ((A[i] - B) / C) + 1;
}
}
cout << ret << "\n";
}
C++ 3rd try
#include <iostream>
using namespace std;
int N, B, C;
long long ret;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
int A[N];
for (int i = 0; i < N; i++) {
cin >> A[i];
}
cin >> B >> C;
for (int i = 0; i < N; i++) {
A[i] -= B;
if (A[i] > 0) {
if (A[i] % C > 0)
ret += (A[i] / C) + 2;
else
ret += (A[i] / C) + 1;
} else {
ret += 1;
}
}
cout << ret << "\n";
}
Python
import sys
input = sys.stdin.readline
N = int(input())
A = []
A = list(map(int, input().split()))
B, C = map(int, input().split())
ret = 0
for i in range(N):
A[i] -= B
if A[i] <= 0:
ret += 1
else:
if A[i] % C > 0:
ret += A[i] // C + 2
else:
ret += A[i] // C + 1
print(ret)
- 세 가지 코드 모두 효율성에 차이는 없었다.
- 파이썬에서 정수 나눗셈을 하려면
//
을 사용.