๐Ÿซ  ๋ฐฑ์ค€ 1065 (https://www.acmicpc.net/problem/1065)

 

 

1065๋ฒˆ: ํ•œ์ˆ˜

์–ด๋–ค ์–‘์˜ ์ •์ˆ˜ X์˜ ๊ฐ ์ž๋ฆฌ๊ฐ€ ๋“ฑ์ฐจ์ˆ˜์—ด์„ ์ด๋ฃฌ๋‹ค๋ฉด, ๊ทธ ์ˆ˜๋ฅผ ํ•œ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ๋“ฑ์ฐจ์ˆ˜์—ด์€ ์—ฐ์†๋œ ๋‘ ๊ฐœ์˜ ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ์ผ์ •ํ•œ ์ˆ˜์—ด์„ ๋งํ•œ๋‹ค. N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜

www.acmicpc.net

๐Ÿง Algorithm 
1. ๋จผ์ € ๋“ฑ์ฐจ์ˆ˜์—ด์ด์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ž๋ฆฌ์ˆ˜๊ฐ„์˜ ๊ณต์ฐจ๊ฐ€ ๊ฐ™์•„์•ผ ํ•˜๊ธฐ์— a-b์™€ b-c์˜ ๊ฐ’์ด ๋™์ผํ•ด์•ผํ•จ.
2. ์ด๋ฅผ ์œ„ํ•ด ํ•จ์ˆ˜ hansu๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ  ์ด๋ฅผ 100์˜์ž๋ฆฌ์ˆ˜์—์„œ ์‚ฌ์šฉ.
3. 100~999๊นŒ์ง€ ๊ธฐ์ค€์ผ ๋•Œ ๋“ฑ์ฐจ์ˆ˜์—ด์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œ์ผœ์•ผ ํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
#include <iostream>
#include <algorithm>
using namespace std;

bool hansu (int num){
    int a = num / 100;
    int b = (num - a*100) / 10;
    int c = num % 10;
    return a-b == b-c;
}

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

    int cnt = 0;
    int num;    cin >> num;

    if (num <= 99){
        cout << num;
    }
    else if (num >= 100 && num <= 999) {
        for (int i = 100; i <= num; i++) {
            cnt += hansu(i);
        }
        cout <<  cnt + 99;
    }
    else
        cout << 144;
}

 

 

 

๐Ÿซ  ๋ฐฑ์ค€ 1978(https://www.acmicpc.net/problem/1978)

 

1978๋ฒˆ: ์†Œ์ˆ˜ ์ฐพ๊ธฐ

์ฒซ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 100์ดํ•˜์ด๋‹ค. ๋‹ค์Œ์œผ๋กœ N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ ์ˆ˜๋Š” 1,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.

www.acmicpc.net

๐Ÿง Algorithm _ ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฒ•
1. a % b == 2๋ผ๋Š” ์‹์€ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์‹์ด๋ฉฐ 
2. ์ด ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” cnt๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด x์˜ ์•ฝ์ˆ˜๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ 
3. ์†Œ์ˆ˜์˜ ํŠน์ง• (์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ 1๊ณผ ์ž๊ธฐ์ž์‹ )์„ ์ด์šฉํ•ด ์•ฝ์ˆ˜ ๊ฐœ์ˆ˜๊ฐ€ 2์ธ ์ž์—ฐ์ˆ˜ ๊ฐ’๋“ค์„ ์„ธ์ค€๋‹ค.
#include <iostream>
using namespace std;

int main() {
   ios_base::sync_with_stdio(0);

    int num;    cin >> num;
    int count = 0;
    for (int i = 0; i < num; i++) {
        int cnt = 0;
        int x; cin >> x;
        for (int j = 1; j <= x; j++)
            if (x % j == 0)
                cnt++;
        if (cnt == 2)
            count++;
    }
    cout << count << endl;
    return 0;
}

 

 

 

๐Ÿซ  ๋ฐฑ์ค€ 2581(https://www.acmicpc.net/problem/2581)

 

2581๋ฒˆ: ์†Œ์ˆ˜

M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒƒ์„ ๋ชจ๋‘ ์ฐพ์•„ ์ฒซ์งธ ์ค„์— ๊ทธ ํ•ฉ์„, ๋‘˜์งธ ์ค„์— ๊ทธ ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.  ๋‹จ, M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๊ฐ€ ์—†์„ ๊ฒฝ์šฐ๋Š” ์ฒซ์งธ ์ค„์— -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

๐Ÿง Algorithm _ ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฒ•
1. a % b == 2๋ผ๋Š” ์‹์€ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์‹์ด๋ฉฐ 
2. ์ด ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” cnt๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด x์˜ ์•ฝ์ˆ˜๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ 
3. ์†Œ์ˆ˜์˜ ํŠน์ง• (์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ 1๊ณผ ์ž๊ธฐ์ž์‹ )์„ ์ด์šฉํ•ด ์•ฝ์ˆ˜ ๊ฐœ์ˆ˜๊ฐ€ 2์ธ ์ž์—ฐ์ˆ˜ ๊ฐ’๋“ค์„ ์„ธ์ค€๋‹ค.

์ด๋ฅผ ์ด์šฉํ•ด ๊ฐ’๋“ค์˜ ์ „์ฒด ํ•ฉ์„ ๊ตฌํ•ด์ฃผ๊ณ  ๊ฐ€์žฅ ์ตœ์†Œ๊ฐ’์€ ์ž‘์€ ์ˆœ์„œ๋Œ€๋กœ vector์— ๋„ฃ์–ด์คฌ์œผ๋ฏ€๋กœ
๋‹น์—ฐํžˆ vector์˜ ์ฒซ๋ฒˆ์งธ ์›์†Œ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์ด ์ตœ์†Œ๊ฐ’์ด ๋œ๋‹ค.
#include <iostream>
#include <vector>
using namespace std;


int main() {
   ios_base::sync_with_stdio(0);

    int M, N;   cin >> M >> N;
    int sum = 0;

    vector<int> v;

    for (int i = M; i <= N; i++) {
        int cnt = 0;
        for (int j = 1; j <= i; j++)
            if (i % j == 0)
                cnt++;
        if (cnt == 2){
            v.push_back(i);
            sum += i;
        }
    }

    if (v.size() == 0)
        cout << -1 << endl;

    else {
        cout << sum << endl;
        cout << v[0] << endl;
    }
}

 

 

 

 

๐Ÿซ  ๋ฐฑ์ค€ 10814(https://www.acmicpc.net/problem/10814)

 

10814๋ฒˆ: ๋‚˜์ด์ˆœ ์ •๋ ฌ

์˜จ๋ผ์ธ ์ €์ง€์— ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ๋“ค์˜ ๋‚˜์ด์™€ ์ด๋ฆ„์ด ๊ฐ€์ž…ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, ํšŒ์›๋“ค์„ ๋‚˜์ด๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์œผ๋กœ, ๋‚˜์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ๋จผ์ € ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ์ด ์•ž์— ์˜ค๋Š” ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„

www.acmicpc.net

๐Ÿง Algorithm 
STL ์ค‘ ํ•˜๋‚˜์ธ pair๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
(map์˜ ๊ฒฝ์šฐ, ๊ฐ’์ด ๊ฒน์น˜๋ฉด ์ €์žฅ์ด ๋˜์ง€ ์•Š๊ธฐ์— pair๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์—ˆ๋‹ค.)

๋˜ํ•œ stable_sort๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์—ˆ๋‹ค.
๊ทธ๋ƒฅ sort๋ฅผ ์ง„ํ–‰ํ•ด์ฃผ๋ฉด ์ด๋Š” quick sort๋ฐฉ์‹์˜ ๋ถˆ์™„์ „ํ•œ ์ •๋ ฌ๋ฐฉ์‹์ด๋‹ค. (unstable sort ๋ฐฉ์‹)
์ฆ‰, ์›์†Œ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๋ฐ”๋€” ์ˆ˜ ์žˆ๋Š” ์ •๋ ฌ ๋ฐฉ์‹์ด๋‹ค. 

๋”ฐ๋ผ์„œ stable_sort๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋Š” merge sort๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋œ ๋‚ด์žฅํ•จ์ˆ˜์ด๊ธฐ์— ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.


๋‹ค๋งŒ, stableํ•œ ์ •๋ ฌ๋ฐฉ์‹์ด unstableํ•œ ์ •๋ ฌ ๋ฐฉ์‹๋ณด๋‹ค cost๊ฐ€ ๋†’๊ธฐ์— ํŠน๋ณ„ํžˆ stable ์ •๋ ฌ์„ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—๋Š” sort()๊ฐ€ ์•„๋‹Œ, stable_sort()๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋‹จ, ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ endl์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๊ฑธ๋ฆด ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„ "\n"์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
#include <iostream>
#include <algorithm>
using namespace std;

pair<int, string> p[100000];

bool compare (pair<int, string> p1, pair<int, string> p2) {
    return p1.first < p2.first;
}

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

    int num;
    cin >> num;

    for (int i = 0; i < num; i++) {
        int num; string str;  cin >> num >> str;
        p[i] = { num, str };
    }

    stable_sort(p, p+num, compare);

    for (int i=0; i<num; i++) {
        cout << p[i].first << " " << p[i].second << "\n";
    }
}

+ Recent posts