#include <iostream>
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int inputIdx;
    cin >> inputIdx;
    if (inputIdx == 1) {
        cout << "1/1" << 'n';
        return 0;
    }

    int fractionIdx = 1, denominator = 0, numerator = 0; // denominator -> 분모, numerator -> 분자
    for (int i = 2;; i++) {
        if (i % 2 == 0) {
            denominator = i;
            numerator = 1;
            for (int j = 0; j < i; j++) {
                fractionIdx++;
                if (fractionIdx == inputIdx) {
                    cout << numerator << "/" << denominator;
                    return 0;
                }

                denominator--;
                numerator++;
            }
        } else {
            denominator = 1;
            numerator = i;
            for (int j = 0; j < i; j++) {
                fractionIdx++;
                if (fractionIdx == inputIdx) {
                    cout << numerator << "/" << denominator;
                    return 0;
                }

                denominator++;
                numerator--;
            }
        }
    }
    return 0;
}

문제 :

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

'문제풀이 > 백준' 카테고리의 다른 글

1003 - 피보나치 함수  (0) 2021.08.28
2798 - 블랙잭  (0) 2021.08.28
2292 - 벌집  (0) 2021.08.24
2839 - 설탕 배달  (0) 2021.08.24
1712 - 손익분기점  (0) 2021.08.24
#include <iostream>
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int num;
    cin >> num;
    if (num == 1) {
        cout << 1 << '\n';
        return 0;
    }

    int sum = 0;
    for (int i = 1; ; i++) {
        sum += 6 * i;
        if (num <= sum + 1) {
            cout << i + 1 << '\n';
            return 0;
        }
    }

    return 0;
}

쉽게 풀기 위해서 1은 예외처리해두었다.

방의 개수는 n <= 1+6; -> 2개

n <= 1+6+12 -> 3개

n <= 1+6+12+18 -> 4개

위의 규칙으로 방의 갯수는 정해진다.

6만큼 늘어나는 등차수열을 생각하며 풀면 쉽다.

 

문제 :

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

'문제풀이 > 백준' 카테고리의 다른 글

2798 - 블랙잭  (0) 2021.08.28
1193 - 분수찾기  (0) 2021.08.24
2839 - 설탕 배달  (0) 2021.08.24
1712 - 손익분기점  (0) 2021.08.24
2941 - 크로아티아 알파벳  (0) 2021.08.24
#include <iostream>
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int kg, cnt;
    cin >> kg;
    cnt = kg / 5;
    if (kg % 5 != 0) {
        for (; cnt >= 0; cnt--) {
            if((kg - 5 * cnt) % 3 == 0) {
                cnt += (kg - 5 * cnt) / 3;
                break;
            }
        }
    }

    cout << cnt << '\n';
    return 0;
}

문제 :

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

'문제풀이 > 백준' 카테고리의 다른 글

1193 - 분수찾기  (0) 2021.08.24
2292 - 벌집  (0) 2021.08.24
1712 - 손익분기점  (0) 2021.08.24
2941 - 크로아티아 알파벳  (0) 2021.08.24
5622 - 다이얼  (0) 2021.08.24
#include <iostream>
using namespace std;

int main()
{
    int A, B, C;
    cin >> A >> B >> C;
    int cost;
    cost = C - B;               // 순수익
    if (cost <= 0) {
        cout << "-1" << endl;
    } else {
        cout << A / cost + 1;   // 순수익으로 고정비용 처리단계
    }

    return 0;
}

문제 :

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

풀이참고 :

https://yongku.tistory.com/entry/%EB%B0%B1%EC%A4%80-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98BOJ-%EB%B0%B1%EC%A4%80-1712%EB%B2%88-%EC%86%90%EC%9D%B5%EB%B6%84%EA%B8%B0%EC%A0%90-C

 

'문제풀이 > 백준' 카테고리의 다른 글

2292 - 벌집  (0) 2021.08.24
2839 - 설탕 배달  (0) 2021.08.24
2941 - 크로아티아 알파벳  (0) 2021.08.24
5622 - 다이얼  (0) 2021.08.24
1152 - 단어의 개수  (0) 2021.08.24
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    string str;
    cin >> str;
    vector<string> v = {{"c="}, {"c-"}, {"dz="}, {"d-"}, {"lj"}, {"nj"}, {"s="}, {"z="}};
    int alphabetCnt = 0;
    int wordIdx = 0;
    while (wordIdx < str.size()) {
        for (int i = 0; i < v.size(); i++) {
            if (str.substr(wordIdx, v[i].size()) == v[i]) {
                alphabetCnt++;
                wordIdx += v[i].size();
                break;
            }

            if (i == v.size() - 1) {
                wordIdx++;
                alphabetCnt++;
            }
        }
    }

    cout << alphabetCnt << '\n';
    return 0;
}

문제 :

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

'문제풀이 > 백준' 카테고리의 다른 글

2839 - 설탕 배달  (0) 2021.08.24
1712 - 손익분기점  (0) 2021.08.24
5622 - 다이얼  (0) 2021.08.24
1152 - 단어의 개수  (0) 2021.08.24
1157 - 단어 공부  (0) 2021.08.24
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    string str;
    cin >> str;
    vector<string> v = {{"-1"},{"-1"},{"-1"},{"ABC"},{"DEF"},{"GHI"},{"JKL"},{"MNO"},{"PQRS"},{"TUV"},{"WXYZ"}};
    int sum = 0;    
    for (int i = 0; i < str.size(); i++) {
        for (int j = 0; j < v.size(); j++) {
            if(v[j].find(str[i]) != string::npos) {
                sum += j;
            }
        }
    }

    cout << sum << '\n';
    return 0;
}

각각의 경우에 대비하기 위해 switch-case 쓰실려는 분들은 참고하시면 좋을겁니다. 제가 그런 케이스였으니까요.

풀이는 아래 링크 걸어두겠습니다.

https://aorica.tistory.com/75

 

'문제풀이 > 백준' 카테고리의 다른 글

1712 - 손익분기점  (0) 2021.08.24
2941 - 크로아티아 알파벳  (0) 2021.08.24
1152 - 단어의 개수  (0) 2021.08.24
1157 - 단어 공부  (0) 2021.08.24
11720 - 숫자의 합  (0) 2021.08.24
#include <iostream>
#include <string>
using namespace std;

int main(void) {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    string str;
    getline(cin, str);
    if (str == " " || str == "") {
        cout << 0 << endl;
        return 0;
    }
    
    int wordCnt = 0;
    for (int i = 0; i < str.size(); i++) {
        if (str[i] == ' ') {
            if (i == 0 || i == str.size() - 1) {
                continue;
            }
            wordCnt++;
        }
    }

    cout << wordCnt + 1 << endl;
    return 0;
}

'문제풀이 > 백준' 카테고리의 다른 글

2941 - 크로아티아 알파벳  (0) 2021.08.24
5622 - 다이얼  (0) 2021.08.24
1157 - 단어 공부  (0) 2021.08.24
11720 - 숫자의 합  (0) 2021.08.24
11654 - 아스키 코드  (0) 2021.06.22
#include <iostream>
#include <string>
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    
    string testStr;
    cin >> testStr;
    int alphabetCnt[26] = {0};
    int max = 0,
        maxIdx = 0;
    
    for(int i = 0 ; i < testStr.size(); i++) {
        if(testStr[i] > 90) {
            testStr[i] = toupper(testStr[i]);
        }

        alphabetCnt[testStr[i] - 65]++;
        if(max < alphabetCnt[testStr[i] - 65]) {
            max = alphabetCnt[testStr[i] - 65];
            maxIdx = testStr[i] - 65;
        }
    }

    for(int i = 0 ; i < 26; i++) {
        if(alphabetCnt[i] == alphabetCnt[maxIdx] && maxIdx != i) {
            cout << '?' << '\n';
            return 0;
        }
    }

    cout << (char)(maxIdx + 65) << '\n';
    return 0;
}

알파벳 관련된 문제는 아스키 코드를 사용하자. 다시금 기초의 중요함을 느낀다.

풀이는 하단의 사이트를 참고했습니다. 감사합니다.

https://mtoc.tistory.com/26

'문제풀이 > 백준' 카테고리의 다른 글

5622 - 다이얼  (0) 2021.08.24
1152 - 단어의 개수  (0) 2021.08.24
11720 - 숫자의 합  (0) 2021.08.24
11654 - 아스키 코드  (0) 2021.06.22
10171 - 고양이  (0) 2021.06.22

+ Recent posts