[BOJ/C, C++] 단계별로 풀어보기 / 입출력과 사칙연산 ~ 1차원 배열
발행: (2026년 1월 1일 오후 04:49 GMT+9)
3 min read
원문: Dev.to
Source: Dev.to
1008번 A/B
문제 링크
#include
int main() {
double A, B;
scanf("%lf %lf", &A, &B);
printf("%.9lf", A / B);
}
소수점 아래 9자리 이상을 출력하면 안전합니다. float는 약 6자리만 정확히 표현하므로 double을 사용했습니다.
C++ 구현
#include
#include
int main() {
double A, B;
std::cin >> A >> B;
std::cout
추가 시간 계산 (예시 코드)
int main() {
int A, B, C;
scanf("%d %d %d", &A, &B, &C);
B += C; // 추가 시간을 분에 더함
A += B / 60; // 60분이 넘으면 시를 증가
B %= 60; // 남은 분
printf("%d %d", A >= 24 ? A - 24 : A, B);
}
추가 시간 C를 분 단위로 더하고, 60분으로 나눈 나머지를 이용해 시와 분을 계산합니다.
15552번 빠른 A+B
문제 링크
#include
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int T;
std::cin >> T;
while (T--) {
int A, B;
std::cin >> A >> B;
std::cout
int main() {
while (true) {
int A, B;
std::cin >> A >> B;
if (std::cin.eof()) break;
std::cout
int main() {
int A, B;
while (std::cin >> A >> B) {
std::cout > X` 가 `int`가 아닌 값을 만나면 `false` 를 반환하므로 위와 같이 사용할 수 있습니다.
10818번 최소, 최대
문제 링크
1. 배열을 사용하지 않는 방법
#include
int main() {
int N;
std::cin >> N;
int maximum = -1000001, minimum = 1000001;
while (N--) {
int temp;
std::cin >> temp;
maximum = (temp > maximum) ? temp : maximum;
minimum = (temp
2. 동적 배열 사용 (정렬 전)
#include
int main() {
int N;
std::cin >> N;
int* arr = new int[N];
for (int i = 0; i > arr[i];
std::cout
3. 동적 배열 사용 (정렬 후)
#include
int main() {
int N;
std::cin >> N;
int* arr = new int[N];
for (int i = 0; i > arr[i];
std::sort(arr, arr + N);
std::cout
4. 나머지 연산을 이용한 문제 (예시)
#include
int main() {
bool seen[42] = { false };
int cnt = 0;
for (int i = 0; i > t;
t %= 42;
if (!seen[t]) {
seen[t] = true;
++cnt;
}
}
std::cout
5. 구간 뒤집기 (예시)
#include
int main() {
int N, M;
std::cin >> N >> M;
int* arr = new int[N + 1];
for (int i = 1; i > i >> j;
std::reverse(arr + i, arr + j + 1);
}
for (int i = 1; i <= N; ++i) {
std::cout << arr[i] << ' ';
}
delete[] arr;
}
std::reverse 로 구간 [i, j] 를 뒤집습니다. 바구니는 1번부터 시작하므로 인덱스 0은 사용하지 않습니다.