BOJ 16360번 Go Latin 문제

이번 ICPC 본선 문제 중에 유일하게 푼 문제이다. 내가 푼게 아니라서 집에 와서 풀어봤다.

if문으로 각 조건을 비교하고 테이블에 맞게 붙여주거나 수정 후 붙여주면 된다.

테이블에 속하지 않으면 us를 붙인다.

16360.cpp

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    while (n--) {
        string s;
        cin >> s;
        int sSize = s.size();

        if (s[sSize - 1] == 'a') {
            s += "s";
        } else if (s[sSize - 1] == 'i' || s[sSize - 1] == 'y') {
            s[sSize - 1] = 'i';
            s += "os";
        } else if (s[sSize - 1] == 'l') {
            s += "es";
        } else if (s[sSize - 1] == 'n') {
            s[sSize - 1] = 'a';
            s += "nes";
        } else if (s[sSize - 1] == 'e' && s[sSize - 2] == 'n') {
            s[sSize - 2] = 'a';
            s[sSize - 1] = 'n';
            s += "es";
        } else if (s[sSize - 1] == 'o') {
            s += 's';
        } else if (s[sSize - 1] == 'r') {
            s += "es";
        } else if (s[sSize - 1] == 't') {
            s += "as";
        } else if (s[sSize - 1] == 'u') {
            s += "s";
        } else if (s[sSize - 1] == 'v') {
            s += "es";
        } else if (s[sSize - 1] == 'w') {
            s += "as";
        } else {
            s += "us";
        }
        cout << s << '\n';
    }
}

'알고리즘 & SQL > 백준(BOJ)' 카테고리의 다른 글

백준 2331번 : 반복수열 C++  (0) 2018.11.06
백준 12761번 : 돌다리 C++  (0) 2018.11.06
백준 14753번 : MultiMax C++  (0) 2018.11.02
백준 9086번 : 문자열 C++  (0) 2018.11.02
백준 1427번 : 소트인사이드 C++  (0) 2018.11.02

BOJ 14753번 MultiMax 문제

작년 ACM-ICPC 인터넷 예선 문제였다. 올해 ICPC 본선 예비소집 B번 문제로 나왔다.

오름차순으로 정렬을 하고 맨 뒤 가장 큰 숫자 두 개를 골라 곱한 수와 세 개를 골라 곱한 수 중 큰 값을 일단 max로 갖고 있는다.

음수가 두 개 이상 나오는 경우 맨 앞 [0] [1]을 곱한 수도 양수이기 때문에 이 둘을 곱한 수와 현재 max 중 큰 값을 갖고 있는다.

또 위 음수를 곱한 수와 양수로 가장 큰 수 [size-1]를 곱한 수랑 현재 max를 비교해서 더 높은 값을 출력하면 된다.

14753.cpp

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    vector<int> v;
    for (int i = 0; i < n; i++) {
        int input;
        cin >> input;
        v.push_back(input);
    }
    sort(v.begin(), v.end());
    int result = max(v[n - 1] * v[n - 2], v[n - 1] * v[n - 2] * v[n - 3]);
    if (v[0] * v[1] > 0) {
        result = max(v[0] * v[1], result);
        result = max(v[0] * v[1] * v[n - 1], result);
    }
    cout << result;
}

+ Recent posts