※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 33164번 문제인 じゃんけん (Rock-Scissors-Paper)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/33167

 

두 사람이 차례대로 낸 것이 무엇인지를 먼저 저장해 두자. 그리고 각 차례에 서로 낸 것을 비교하여 누가 이겼는지를 판단하고, 그에 따라 각 사람의 이긴 횟수를 세어주자.

 

승리를 판단하는 것은 조건문 6개를 이용하거나 아래의 구현과 같이 배열을 이용하는 방법 등 다양하게 해낼 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N, cnt1, cnt2;
string A, B;
int X[128][128];

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    X['R']['P'] = X['P']['S'] = X['S']['R'] = 1;
    X['P']['R'] = X['S']['P'] = X['R']['S'] = -1;
    cin >> N >> A >> B;
    for (int i = 0; i < N; i++) {
        if (X[A[i]][B[i]] < 0) cnt1++;
        else if (X[A[i]][B[i]] > 0) cnt2++;
    }

    cout << cnt1 << ' ' << cnt2;
}
728x90

※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 33164번 문제인 鉄道旅行 3 (Railway Trip 3)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/33166

 

총 여행 거리가 \(P\)km 이하인 경우와 초과인 경우를 나누어 생각해보자.

 

\(P\)km 이하인 경우의 요금은 이동 거리 \(Q\)와 단위 요금 \(A\)를 곱한 값이 문제의 답이 될 것이다.

 

또한 \(P\)km 초과인 경우의 요금은 앞선 \(P\)km만큼의 요금 \(PA\)와 남은 거리\(Q-P\)만큼의 요금 \((Q-P)B\)의 합으로 요금을 구할 수 있다.

 

위 내용을 조건문을 이용하여 구현해 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int P, Q, A, B;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> P >> Q >> A >> B;
    if (P < Q) cout << P * A + (Q - P) * B;
    else cout << Q * A;
}
728x90

※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 33164번 문제인 徒競走 (Footrace)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/33165

 

속력과 이동 시간이 주어질 때 이동 거리의 값을 계산하는 문제이다.

 

이동 거리는 속력과 이동 시간을 곱해 구할 수 있으므로, 주어지는 두 정수의 곱을 출력해 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int A, B;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> A >> B;
    cout << A * B;
}
728x90

※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 33164번 문제인 どら焼き (Dorayaki)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/33164

 

각 도라야끼에 대하여 맛을 계산하는 데에는 \(O(1)\)의 연산이 필요하므로 모든 도라야끼의 맛을 하나하나 구하는 것은 \(O(NM)\)의 시간복잡도로 해낼 수 있다. 또한 \(NM\)은 10000 이하이므로 가능한 모든 도라야끼에 대하여 각 도라야끼의 맛을 더하는 것으로도 문제를 충분히 해결할 수 있음을 관찰할 수 있다.

 

위 내용을 반복문 등으로 단순히 구현하여 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N, M, ans;
int A[100], B[100];

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> N >> M;
    for (int i = 0; i < N; i++) cin >> A[i];
    for (int i = 0; i < M; i++) cin >> B[i];

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            ans += (A[i] + B[j]) * max(A[i], B[j]);
        }
    }

    cout << ans;
}
728x90

※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 33163번 문제인 OIJ (OIJ)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/33163

 

주어지는 문자열의 각 'J'는 'O'로, 각 'O'는 'I'로, 각 'I'는 'J'로 바꾸어 출력하는 문제이다.

 

글쓴이는 각 문자마다 해당 문자가 바뀌게 되는 문자를 기록해 둔 배열을 만들어 문제를 해결하였다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N;
char A[128];

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    A['J'] = 'O', A['O'] = 'I', A['I'] = 'J';
    cin >> N;
    while (N--) {
        char c; cin >> c;
        cout << A[c];
    }
}
728x90

※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 33162번 문제인 散歩 (Walking)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/33162

 

JOI군은 홀수번째 이동에서는 3미터 앞으로 이동하며 짝수번째 이동에서는 2미터 뒤로 이동함을 관찰하자.

 

따라서 \(X\)까지의 홀수의 개수만큼 3미터 앞으로 이동 및 짝수의 개수만큼 2미터 뒤로 이동했을 때의 출발점으로부터의 변위가 문제의 답이 된다.

 

\(X\)의 제한이 작으므로 그냥 반복문을 통해 이동을 시뮬레이션하는 것으로 답을 구해도 좋다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N, A, B;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> N;
    B = N / 2, A = N - B;
    cout << A * 3 - B * 2;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 33164 // C++] どら焼き (Dorayaki)  (0) 2025.01.16
[BOJ 33163 // C++] OIJ (OIJ)  (0) 2025.01.15
[BOJ 33161 // C++] 鉛筆 2 (Pencils 2)  (0) 2025.01.13
[BOJ 33135 // C++] Append and Panic!  (0) 2025.01.10
[BOJ 33134 // C++] Road Network  (0) 2025.01.09

+ Recent posts