BOJ 2998번 8진수 문제

2진수를 8진수로 고치는 문제다.

2진수 글자 수가 3의 배수가 아니면 앞에 0을 붙인다.

3글자씩 봐서 000일 경우 0, 001일 경우 1, 010일 경우 2 ... 를 결과 string에 넣고 출력하는 간단한 문제였다.

한번 제출에서 틀렸는데, 111 같이 처음부터 길이가 3의 배수일때 07로 출력을 하는 경우 때문이였다.

그래서 if문으로 3의 배수가 아닐때만 앞에 0을 붙이게 하고 제출했다.

2998.cpp

#include <iostream>
#include <string>
using namespace std;

char check(char, char, char);

int main() {
    string si;
    cin >> si;
    int stringSize = si.size();
    if (stringSize % 3 != 0) {
        int threeRemainder = stringSize % 3;
        int plus = 3 - threeRemainder;
        for (int i = 0; i < plus; i++) {
            si = "0" + si;
        }
    }
    int howmany = si.size() / 3;
    string result;
    for (int i = 0; i < howmany; i++) {
        result[i] = check(si[3 * i], si[3 * i + 1], si[3 * i + 2]);
        cout << check(si[3 * i], si[3 * i + 1], si[3 * i + 2]);
    }
}

char check(char one, char two, char three) {
    if (one == '0' && two == '0' && three == '0') {
        return '0';
    }
    if (one == '0' && two == '0' && three == '1') {
        return '1';
    }
    if (one == '0' && two == '1' && three == '0') {
        return '2';
    }
    if (one == '0' && two == '1' && three == '1') {
        return '3';
    }
    if (one == '1' && two == '0' && three == '0') {
        return '4';
    }
    if (one == '1' && two == '0' && three == '1') {
        return '5';
    }
    if (one == '1' && two == '1' && three == '0') {
        return '6';
    }
    if (one == '1' && two == '1' && three == '1') {
        return '7';
    }
}

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

백준 14753번 : MultiMax C++  (0) 2018.11.02
백준 9086번 : 문자열 C++  (0) 2018.11.02
백준 1427번 : 소트인사이드 C++  (0) 2018.11.02
백준 2851번 : 슈퍼 마리오 C++  (1) 2018.11.02
백준 10987번 : 단위 C++  (0) 2018.10.30

BOJ 10987번 단위 문제

문자열에 관한 간단한 문제다.

string을 입력받고 인덱스로 한글자씩 살피면서 'a' 'e' 'i' 'o' 'u'이면 count값을 1씩 증가시킨다.

모두 살핀 다음 출력하면 된다.

10987.cpp

#include <iostream>
using namespace std;

bool check(char c) {
    if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
        return true;
    }
    return false;
}

int main() {
    string s;
    cin >> s;
    int stringSize = s.size();
    int count = 0;
    for (int i = 0; i < stringSize; i++) {
        if (check(s[i])) {
            count++;
        }
    }
    cout << count;
}

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

백준 14753번 : MultiMax C++  (0) 2018.11.02
백준 9086번 : 문자열 C++  (0) 2018.11.02
백준 1427번 : 소트인사이드 C++  (0) 2018.11.02
백준 2851번 : 슈퍼 마리오 C++  (1) 2018.11.02
백준 2998번 : 8진수 C++  (0) 2018.10.31

+ Recent posts