[모각소] 2022-08-02 (화)

김진원·2022년 8월 2일
0

오늘 할 일

  • Solved.ac의 CLASS1++에 해당하는 BOJ(Baekjoon Online Judge)문제 풀기 (#2739, #2741, #2742, #2753, #2884, #2908)

CLASS1++ BOJ 문제 풀이

#2739 : 구구단

#include <iostream>

using namespace std;

int main(int argc, const char * argv[]) {
    int num;
    cin >> num;
    
    for (int i = 1; i < 10; i++) {
        cout << num << " * " << i << " = " <<num * i << "\n";
    }
    
    return 0;
}

#2741 : N 찍기

#include <iostream>

using namespace std;

int main(int argc, const char * argv[]) {
    int n;
    cin >> n;
    
    for (int i = 1; i <= n; i++) {
        cout << i << "\n";
    }
    return 0;
}

N 찍기 문제를 풀면서 흥미로운 점을 발견했다. 반복문을 통해 결과를 출력할 때, 줄바꿈을 위해 처음에는 std::endl을 사용했는데 시간초과 오류가 떠 이스케이프 시퀀스인 \n으로 바꿔 채점을 돌리니 제대로 채점되었다. std::endl의 경우는 실행될 때마다 시스템 내 버퍼를 비우는 작업을 추가로 하게 돼 실행 시간이 느려질 수 있어 \n을 사용해야 시간을 절약할 수 있다.

#2742 : 기찍 N

#include <iostream>

using namespace std;

int main(int argc, const char * argv[]) {
    int n;
    cin >> n;
    
    for (int i = n; i > 0; i--) {
        cout << i << "\n";
    }
    return 0;
}

#2753 : 윤년

#include <iostream>

using namespace std;

int main(int argc, const char * argv[]) {
    int year;
    cin >> year;
    
    if (((year % 4 == 0) && (year % 100 != 0)) || year % 400 == 0) {
        cout << 1 << endl;
    } else {
        cout << 0 << endl;
    }
    
    return 0;
}

#2884 : 알람 시계

#include <iostream>

using namespace std;

int main(int argc, const char * argv[]) {
    int hour;
    int minute;
    
    cin >> hour >> minute;
    
    if (minute < 45) {
        if (hour == 0) {
            hour = 23;
        } else {
            hour = hour - 1;
        }
        minute = 15 + minute;
    } else {
        minute = minute - 45;
    }
    
    cout << hour << " " << minute << endl;
    
    return 0;
}

#2908 : 상수

#include <iostream>

using namespace std;

int main(int argc, const char * argv[]) {
    int temp[3];
    int num1, num2;
    cin >> num1 >> num2;
    int reNum1, reNum2;
    
    int d = 10;
    for (int i = 0; i < 3; i ++) {
        temp[i] = num1 % d / (d / 10);
        d = d * 10;
    }
    reNum1 = temp[0] * 100 + temp[1] * 10 + temp[2];
    
    d = 10;
    for (int i = 0; i < 3; i ++) {
        temp[i] = num2 % d / (d / 10);
        d = d * 10;
    }
    reNum2 = temp[0] * 100 + temp[1] * 10 + temp[2];
    
    if (reNum1 > reNum2) {
        cout << reNum1 << endl;
    } else {
        cout << reNum2 << endl;
    }
    
    return 0;
}

소감

오늘은 며칠간 소홀히했던 백준 알고리즘 문제를 풀었다. 이제 CLASS1에서 새싹문제만 마저 풀면 CLASS1의 모든 문제를 풀게 된다. 난이도가 올라감에 따라 푸는 시간은 점점 더 길어지고 때로는 지루해지지만 그만큼 실력이 늘어나는 것도 체감돼 기분이 좋다. 앞으로도 끈기있게 열심히 풀어 나갈 것이다.

0개의 댓글