BOJ 2953번 나는 요리사다 문제

5x4 배열에서 행마다 sum을 구하고 가장 큰 행의 번호를 출력한다.

2953.cpp

#include <bits/stdc++.h>
using namespace std;
int arr[5][4];
int main() {
    int sum, max_ = 0;
    int cook = 0;
    for(int i=0;i<5;i++){
        for(int j=0;j<4;j++){
            cin >> arr[i][j];
        }
    }
    for (int i = 0; i < 5; i++) {
        sum = 0;
        for (int j = 0; j < 4; j++) {
            sum += arr[i][j];
        }
        if (sum > max_) {
            cook = i + 1;
            max_ = sum;
        }
    }
    cout << cook << ' ' << max_;
}

BOJ 1193번 분수찾기 문제

배열을 45도 회전시키면 아래와 같이 나온다.

1/1

1/2 2/1

3/1 2/2 1/3

1/4 2/3 3/2 4/1

5/1 4/2 3/3 2/4 1/5

1/6 2/5 3/4 4/3 5/2 6/1

분자 분모의 합이 1행에서 2, 2행에서 3, 3행에서 4, 4행에서 5..가 되고,

홀수행은 합-1부터 시작해서 1씩 감소한다.

짝수행은 1부터 시작해서 합-1까지 증가한다.

1193.cpp

#include <bits/stdc++.h>
#define MAX_ 10000
using namespace std;

int main() {
    int n;
    cin >> n;

    int i = 1;
    int s = 0;
    while (true) {
        if (n - i <= 0) {
            break;
        }
        n -= i;
        i++;
        s++;
    }

    if (s % 2 == 0) {
        cout << s + 2 - n << "/" << n;
    } else {
        cout << n << "/" << s + 2 - n;
    }
}

BOJ 9414번 프로그래밍 대회 전용 부지 문제

크리스마스 기념 꿀잼꿀문입니다. 왜 틀렸는지 모르겠는데 3번이나 틀렸습니다. 왜 틀렸을까요 로직이 다 같았는데.. long long 으로 바꾼 뒤 맞은거 같네요.

9414.cpp

#include <bits/stdc++.h>
using namespace std;

long long power(int n, int x) {
    int result = 1;
    for (int i = 0; i < x; i++) {
        result *= n;
    }
    return result;
}

void solve() {
    int n;
    long long sum = 0;
    int size = 0;
    vector<int> v;
    while (true) {
        cin >> n;
        v.push_back(n);
        size++;
        if (n == 0) {
            break;
        }
    }
    sort(v.begin(), v.end());
    reverse(v.begin(), v.end());
    // 역순으로 정렬해서 비싼 땅을 먼저 산다.
    for (int i = 0; i < size; i++) {
        sum += 2 * (long long)power(v[i], i + 1);
    }
    if (sum >= 5000000) {
        cout << "Too expensive" << '\n';
    } else {
        cout << sum << '\n';
    }
}

int main() {
    int test;
    cin >> test;
    while (test--) {
        solve();
    }
}

BOJ 2872번 우리집엔 도서관이 있어 문제

우리 학교, hi-arc 학회 갓 연두님의 꿀잼꿀문으로 추천받아서 풀었다.

제자리에 없으면 답을 1씩 증가시킨다. 제자리에 있으면 check 값을 1씩 줄여가며 비교한다.

2872.cpp

#include <bits/stdc++.h>
using namespace std;
int book[300001];
int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; i++){
        cin >> book[i];
    }
    int checkingNum = n;
    int ans = 0;
    for (int i = n - 1; i >= 0; i--) {
        if (book[i] == checkingNum) {
            checkingNum--;
        }
        else{
            ans++;
        }
    }
    cout << ans;
    return 0;
}

BOJ 2752번 세수정렬 문제

sort 쓰면 쉽게 풀 수 있다.

2752.cpp

#include <bits/stdc++.h>
using namespace std;

int arr[3];

int main() {
    int input;
    for (int i = 0; i < 3; i++) {
        cin >> input;
        arr[i] = input;
    }
    sort(arr, arr + 3);
    for (int i = 0; i < 3; i++)
        cout << arr[i] << ' ';
}

BOJ 2864번 5와 6의 차이 문제

5는 모두 6으로 바꿨을때, 6은 모두 5로 바꿨을때를 만들어서 합을 출력하면 된다.

2864.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    string s1, s2;
    cin >> s1 >> s2;
    int s1_size = s1.size();
    int s2_size = s2.size();

    for (int i = 0; i < s1_size; i++) {
        if (s1[i] == '6') s1[i] = '5';
    }
    for (int i = 0; i < s2_size; i++) {
        if (s2[i] == '6') s2[i] = '5';
    }
    cout << stoi(s1) + stoi(s2) << ' ';

    for (int i = 0; i < s1_size; i++) {
        if (s1[i] == '5') s1[i] = '6';
    }
    for (int i = 0; i < s2_size; i++) {
        if (s2[i] == '5') s2[i] = '6';
    }
    cout << stoi(s1) + stoi(s2);
}

BOJ 3052번 나머지 문제

나머지를 체크하는 bool 배열[42]을 만들어서 true의 개수를 센다.

3052.cpp

#include <bits/stdc++.h>
using namespace std;

bool check[42];

int main() {
    int n = 10;
    while (n--) {
        int input;
        cin >> input;
        check[input % 42] = true;
    }
    int result = 0;
    for (int i = 0; i < 42; i++) {
        if (check[i]) {
            result++;
        }
    }
    cout << result;
}

+ Recent posts