[BOJ/C, C++] 단계별로 풀어보기 / 입출력과 사칙연산 ~ 1차원 배열

Published: (January 1, 2026 at 02:49 AM EST)
3 min read
Source: 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은 사용하지 않습니다.

Back to Blog

Related posts

Read more »

MiniScript Road Map for 2026

2026 Outlook With 2025 coming to a close, it’s time to look ahead to 2026! MiniScript is now eight years old. Many programming languages really come into their...