๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[BOJ] C++์—ฐ์Šตํ•˜๊ธฐ! ๋ฐฑ์ค€ ๋ฌธ์ œ์ง‘ (by jihwan0319)

by ์œ ๋ฏธ๋ฏธYoomimi 2023. 8. 1.

C++ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ๊ณต๋ถ€ํ•  ๊ฒธ ๋ฐฑ์ค€ ๋ฌธ์ œ๋“ค์„ C++๋กœ ํ’€์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

์—ฌํƒœ ๋ฐฑ์ค€์€ ํŒŒ์ด์ฌ, C๋กœ๋งŒ ํ’€์—ˆ๋Š”๋ฐ ํ•™๊ต์—์„œ ์ž๊พธ C++์„ ์จ์„œ.. ๊ฐ•์ œ ๊ณต๋ถ€

 

 

์ฒ˜์Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•  ๋•Œ๋‚˜ ์ฝ”ํ…Œ ์ž…๋ฌธํ•  ๋•Œ๋Š” ํŒŒ์ด์ฌ์ด ์••๋„์ ์œผ๋กœ ์‰ฝ๊ฒ ์ง€๋งŒ..

๋Ÿฐํƒ€์ž„ ์ด์Šˆ๋„ ๊ทธ๋ ‡๊ณ  ์ž๋ฃŒ๋„ ๋” ํ’๋ถ€ํ•ด์„œ ์‹œ๊ฐ„๋‚  ๋•Œ C++๋กœ๋„ ๊ณต๋ถ€ํ•ด๋‘ฌ์•ผ ํ•˜๊ฒ ๋‹ค ์‹ถ์–ด์„œ..

ํ•˜๊ฒŒ ๋๋‹ค๋Š” ์ด์•ผ๊ธฐ.

 

 

์•„๋ฌดํŠผ!

๊ทธ๋ž˜์„œ ๋ฐฑ์ค€ ์‚ฌ์ดํŠธ์—์„œ jihwan0319๋‹˜์ด ํŽธ์ง‘ํ•œ

<C++์—ฐ์Šตํ•˜๊ธฐ!> ๋ฌธ์ œ์ง‘์„ C++๋กœ ํ’€์–ด๋ณด์•˜๋‹ค.

 

https://www.acmicpc.net/workbook/view/10119

 

๋ฌธ์ œ์ง‘: c++์—ฐ์Šตํ•˜๊ธฐ! (jihwan0319)

 

www.acmicpc.net

์ด ๋ฌธ์ œ์ง‘์—๋Š” 1000, 1001, 1008, 10998, 1026, 2659, 2693, 15970, 15975, 20186๋ฒˆ ๋ฌธ์ œ๊ฐ€ ์ˆ˜๋ก๋˜์–ด ์žˆ๋‹ค.

 

 


 

1000. A+B

 

์ฒซ์งธ ์ค„์— A์™€ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 < A, B < 10)

=> ์ฒซ์งธ ์ค„์— A+B๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

๊ธฐ๋ณธ์ ์ธ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•ด <iostream> ํ—ค๋” ํŒŒ์ผ์„ include ํ•ด์•ผ ํ•œ๋‹ค.
C++์—์„œ๋Š” ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๋ผ๋„ namespace๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ํ•จ์ˆ˜๊ฐ€ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ํ•จ์ˆ˜๋ฅผ ์“ธ ๋•Œ (namespace)::(function)๊ผด๋กœ ์“ฐ๋˜์ง€, ์•„๋‹ˆ๋ฉด main ํ•จ์ˆ˜ ๋ฐ–์— using namespace (namespace);๋ฅผ ํ•ด์ฃผ์–ด ํŠน์ • namespace์—์„œ๋งŒ ํ•จ์ˆ˜๋ฅผ ์“ฐ๋Š” ๊ฒƒ์œผ๋กœ ์• ์ดˆ์— ์ •์˜ํ•ด๋ฒ„๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ํ•ด๋‹น namespace์— ์ด๋ฆ„์ด ๊ฒน์น˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๋ฏ€๋กœ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์ด๋‹ค.

(์ง€๊ธˆ ์ด๋Ÿฐ ์‰ฌ์šด ๋ฌธ์ œ๋“ค์„ ํ’€ ๋•Œ๋Š” ์ƒ๊ด€์—†๋‹ค.)

 

์ž…๋ ฅ์„ ์œ„ํ•ด std์˜ cin์„ ์“ด๋‹ค.

int user_input;
std::cin >> user_input;

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์„ user_input์ด๋ผ๋Š” ์ •์ˆ˜ํ˜• ๋ฐ์ดํ„ฐ๊ฐ’์œผ๋กœ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค.
์ถœ๋ ฅ์„ ์œ„ํ•ด์„œ๋Š” std์˜ cout๋ฅผ ์“ด๋‹ค.

std::cout << /* ์ถœ๋ ฅํ•  ๊ฒƒ */ << /* ์ถœ๋ ฅํ•  ๊ฒƒ */ << ... << /* ์ถœ๋ ฅํ•  ๊ฒƒ */;

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ถœ๋ ฅ๋œ๋‹ค.

 

๋”ฐ๋ผ์„œ 1000๋ฒˆ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ’€ ์ˆ˜ ์žˆ๋‹ค.

#include <iostream>

int main() {
    int A, B;
    std::cin >> A >> B;
    std::cout << A + B;
    return 0;
}

 

์„ธ์ƒ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์ง€๋งŒ ์•„๋ฌดํŠผ python์— ๋น„ํ•ด ์งง์€ ๋Ÿฐํƒ€์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 1ms๋„ ์•ˆ ๊ฑธ๋ ธ๊ตฐ!

 


 

1001. A-B

 

1000๋ฒˆ์„ ๊ทธ๋ƒฅ ๋บ„์…ˆ์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค.

 

 


1008. A/B

 

์ฒซ์งธ ์ค„์— A/B๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์‹ค์ œ ์ •๋‹ต๊ณผ ์ถœ๋ ฅ๊ฐ’์˜ ์ ˆ๋Œ€์˜ค์ฐจ ๋˜๋Š” ์ƒ๋Œ€์˜ค์ฐจ๊ฐ€ 10-9 ์ดํ•˜์ด๋ฉด ์ •๋‹ต์ด๋‹ค.

 

[ํ‹€๋ฆฐ ๋‹ต]

#include <iostream>

int main() {
    double A;
    double B;
    std::cin >> A >> B;
    std::cout << A / B;
    return 0;
}

์ด ์ฝ”๋“œ๋ฅผ ๋Œ๋ ค์„œ 1 / 3 ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด๋ณด๋ฉด 0.333333์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ž๋ฃŒํ˜•์„ double๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ์Œ์—๋„, ๊ธฐ๋ณธ์ ์œผ๋กœ std::cout์˜ ๊ธฐ๋ณธ ์ •๋ฐ€๋„๊ฐ€ 6์ด๋ผ ์†Œ์ˆซ์  6๋ฒˆ์งธ ์ž๋ฆฌ๊นŒ์ง€๋งŒ ์ถœ๋ ฅ๋œ๋‹ค.ใ„ด

 

๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ ์†Œ์ˆซ์  ์ž๋ฆฌ์ˆ˜๋ฅผ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

 

[๋งž๋Š” ๋‹ต]

#include <iostream>

int main() {
    double A;
    double B;
    std::cin >> A >> B;
    std::cout << std::fixed;
    std::cout.precision(9);
    std::cout << A / B;
    return 0;
}

cout.precision(n)์€ ์†Œ์ˆ˜๋ถ€์™€ ์ •์ˆ˜๋ถ€๋ฅผ ํ•ฉํ•ด n์ž๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋œ๋‹ค.

์šฐ๋ฆฌ๋Š” '์†Œ์ˆ˜๋ถ€'์— ๋Œ€ํ•ด 9์ž๋ฆฌ ์ œํ•œ์„ ๊ฑธ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์•ž์— std::cout << std::fixed๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค.

 


 

10998. AxB

 

์ •์ˆ˜x์ •์ˆ˜ ๋‹ต์€ ๋ฌด์กฐ๊ฑด ์ •์ˆ˜์ด๋ฏ€๋กœ ์•ž์„  ๋ง์…ˆ, ๋บ„์…ˆ ๋ฌธ์ œ์ฒ˜๋Ÿผ ํ’€์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

#include <iostream>

int main() {
    int A, B;
    std::cin >> A >> B;
    std::cout << A * B;
    return 0;
}

 


 

1026. ๋ณด๋ฌผ

 

1xN ํฌ๊ธฐ์˜ ๋ฐฐ์—ด ๋‘ ์ค„(A, B)์„ ์ž…๋ ฅ ๋ฐ›์•„์„œ, A๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ, B๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ ๋’ค ์š”์†Œ๋ผ๋ฆฌ ๊ณฑํ•œ ๊ฐ’์˜ sum์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋‹ค. ์‚ด์ง ๊นŒ๋‹ค๋กœ์šด ๋ถ€๋ถ„์€ 'B๋Š” ์žฌ๋ฐฐ์—ดํ•˜์ง€ ์•Š๊ณ ' ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฑฐ๋‹ค. ์ฆ‰ B์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์— ๋ฐฐ์น˜์— ๋งž๊ฒŒ A๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์ด ๋˜๋„๋ก ์ •๋ ฌํ•œ ๋’ค ๊ณฑํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฑฐ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์‚ฌ์‹ค ๊ทธ๋ƒฅ B๋ฅผ ์žฌ๋ฐฐ์—ดํ•ด๋ฒ„๋ ค๋„ ์ •๋‹ต์ฒ˜๋ฆฌ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() {
    int N, x;
    cin >> N;
    int s = 0;
    vector<int> A, B, C;
    for (int i=0; i<N; i++) {
        cin >> x;
        A.push_back(x);
    }
    for (int i=0; i<N; i++) {
        cin >> x;
        B.push_back(x);
    }
    C = B;
    sort(A.begin(),A.end());
    sort(C.rbegin(),C.rend());
    for (int i=0; i<N; i++) {
        s = s + A[i]*C[i];
    }
    cout << s;
}

 

cin์€ ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด ๊ณต๋ฐฑ ์•ž๊นŒ์ง€๋งŒ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ๋ฒกํ„ฐ ์ž…๋ ฅ์‹œ ์ •์ˆ˜ ์‚ฌ์ด์— ๊ณต๋ฐฑ(์ŠคํŽ˜์ด์Šค)์„ ์ž…๋ ฅํ•˜๋Š” ์ˆœ๊ฐ„ ํ•ด๋‹น ์ •์ˆ˜๊ฐ€ ๋ฒกํ„ฐ๋กœ ์‚ฝ์ž…๋˜๊ณ  for๋ฌธ์ด ๋Œ์•„๊ฐ€ ๋‹ค์‹œ cin์œผ๋กœ ์ž…๋ ฅ๋ฐ›์„ ์ฐจ๋ก€๊ฐ€ ์˜จ๋‹ค. ์ด๋•Œ ์•ž์„œ ์ž…๋ ฅํ•œ ๊ณต๋ฐฑ์€ ๋ฒ„ํผ์— ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

์•„๋ฌดํŠผ ๊ทธ๋ƒฅ B ๋ฒกํ„ฐ๋ฅผ C์— ๋ณต์‚ฌํ•ด๋ฒ„๋ฆฌ๊ณ  C๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด A์˜ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๊ณผ ์š”์†Œ๋ผ๋ฆฌ ๊ณฑํ•ด๋ฒ„๋ ธ๋‹ค.

 

 

 

์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋ฒกํ„ฐ ๊ฐœ๋…์„ ๋‹ค์‹œ ์ •๋ฆฝํ•˜๊ณ ์ž C++์—์„œ ๋ฆฌ์ŠคํŠธ์™€ ๋ฒกํ„ฐ์˜ ์ฐจ์ด๋ฅผ ์•„๋ž˜ ํฌ์ŠคํŠธ์— ์ •๋ฆฌํ–ˆ๋‹ค.


https://yoomimi.tistory.com/entry/C-%EB%A6%AC%EC%8A%A4%ED%8A%B8list%EC%99%80-%EB%B2%A1%ED%84%B0vector%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

[C++] ๋ฆฌ์ŠคํŠธ(list)์™€ ๋ฒกํ„ฐ(vector)์˜ ์ฐจ์ด

C++์—์„œ ๋ฆฌ์ŠคํŠธ์™€ ๋ฒกํ„ฐ๋Š” ๊ฐ๊ฐ ๋ฌด์—‡์ด๊ณ  ๋‘˜์€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ์•Œ์•„๋ณด์ž. C++์˜ Standard Template Library(STL)์— ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ(๋ชจ๋“  ํƒ€์ž…์˜ ๊ฐ์ฒด ๋ณด๊ด€)๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐœ๋กœ ๋‚˜๋‰œ๋‹ค. ๊ฐ์ฒด๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ณด๊ด€

yoomimi.tistory.com

 


 

2659. ์‹ญ์ž์นด๋“œ

 

 

์ผ๋‹จ clock ๋ฒกํ„ฐ์— ์‹œ๊ณ„์ˆ˜๋ฅผ ์ž‘์€ ์ˆ˜ ๋ถ€ํ„ฐ ์ฃ„๋‹ค ๋„ฃ๊ณ ,

์ž…๋ ฅ ๋ฐ›์€ ์ˆ˜๋ฅผ ์‹œ๊ณ„์ˆ˜๊ฐ€ ๋˜๋„๋ก ์ •๋ ฌํ•œ ํ›„

๊ทธ ์ˆ˜๊ฐ€ clock ๋ฒกํ„ฐ์—์„œ ๋ช‡๋ฒˆ์งธ์— ์žˆ๋Š”์ง€ ์ฐพ์•„์•ผ ํ•˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() {
    int a, b, c, d, m;
    vector<int> v, clock;
    cin >> a >> b >> c >> d;
    v.push_back(1000*a + 100*b + 10*c +d);
    v.push_back(1000*b + 100*c + 10*d +a);
    v.push_back(1000*c + 100*d + 10*a +b);
    v.push_back(1000*d + 100*a + 10*b +c);
    m = *min_element(v.begin(), v.end()); //์ž…๋ ฅ๋ฐ›์€ ์ˆ˜์˜ ์‹œ๊ณ„์ˆ˜ ๊ฐ’
    for (int i=0; i<9; i++){
        for (int j=0; j<9; j++){
            for (int k=0; k<9; k++){
                for (int l=0; l<9; l++){
                    if ((i<=j)&(i<=k)&(i<=l)&(((i+1)*10+j+1)<=((k+1)*10+l+1))&((l+1 + (k+1)*10 + (j+1)*100 + (i+1)*1000)<=(k+1 + (j+1)*10 + (i+1)*100 + (l+1)*1000))){
                        clock.push_back(l+1 + (k+1)*10 + (j+1)*100 + (i+1)*1000);
                    }
                }
            }
        }
    }
    cout << find(clock.begin(), clock.end(), m) - clock.begin() + 1;
}

์ผ๋‹จ ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๋ฅผ ์‹œ๊ณ„์ˆ˜๋กœ ๋งŒ๋“œ๋Š” ๊ฑด ๊ทธ๋ƒฅ abcd, bcda, cdab, dabc ๋„ค ๊ฐ€์ง€๋ฅผ ์ „๋ถ€ ๋ฒกํ„ฐ์— ๋„ฃ์–ด๋ณด๊ณ 

min ๊ฐ’์„ ๋ฝ‘์•˜๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ผ๋‹จ ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜์˜ ์‹œ๊ณ„์ˆ˜ ๊ฐ’์„ m์— ์ €์žฅํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์‹œ๊ณ„์ˆ˜ ๋ฒกํ„ฐ clock์€,

์œ„ ๋ฐฉ์‹๋Œ€๋กœ ์ˆ˜ ํ•˜๋‚˜์”ฉ  abcd, bcda, cdab, dabc๋ฅผ ํ•ด๋ณด๊ณ  ์‹œ๊ณ„์ˆ˜๋งŒ ๋ฝ‘์•„๋‚ด๋ณผ๊นŒํ•˜๋‹ค๊ฐ€

๋‹ค๋ฅธ ์กฐ๊ฑด์„ ์ฐพ์•„์„œ ๊ทธ๋ƒฅ ๋ชจ๋“  ์‹œ๊ณ„์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฒกํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ณ ์ž ํ–ˆ๋‹ค.

ํ•˜๋‚˜ ์ฐพ์œผ๋ ค๋Š” ๊ฑด๋ฐ ์ „์ฒด ์‹œ๊ณ„์ˆ˜ ๋ฒกํ„ฐ๋ฅผ ๋งŒ๋“œ๋‹ˆ๊นŒ ๋Ÿฐํƒ€์ž„๋„ ๋” ๊ธธ๊ฒŒ ๊ฑธ๋ฆฌ๊ธด ํ•˜๊ฒ ๋‹ค..

 

์‹œ๊ณ„์ˆ˜๊ฐ€ ๋˜๋ ค๋ฉด ๊ฒฐ๊ตญ ๋„ค์ž๋ฆฌ์ˆ˜ ijkl (ํŽธ์˜์ƒ 10^n ๋นผ๊ณ  ์”€)์— ๋Œ€ํ•ด

1) i๊ฐ€ i, j , k, l ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜์—ฌ์•ผ ํ•˜๊ณ 

2) ij <= kl ์ด์–ด์•ผ ํ•˜๊ณ 

3) ijkl <= lijk ์ด์–ด์•ผ ํ•œ๋‹ค.

 

์กฐ๊ฑด ์ƒ๊ฐํ•ด๋ณด๋Š”๋ฐ 30๋ถ„์€ ๊ฑธ๋ฆฐ ๊ฒƒ ๊ฐ™๋‹ค. ((๋จธ์“ฑํƒ€๋“œ))

 

์•„๋ฌดํŠผ ๊ทธ๋ž˜์„œ ๋„ค์ž๋ฆฌ์ˆ˜์˜ ๊ฐ ์ž๋ฆฌ๊ฐ€ 1๋ถ€ํ„ฐ 9๊นŒ์ง€ ์ด๋ฃจ์–ด์ ธ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ž๋ฆฌ์ˆ˜๋งˆ๋‹ค ๋ฐ˜๋ณต๋ฌธ์„ ์ผ๊ณ ,

์‹œ๊ณ„์ˆ˜์ด๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์€ ๊ทธ๋ƒฅ if๋ฌธ ์•ˆ์— ์†์ˆ˜ ์ ์—ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ clock ๋ฒกํ„ฐ์— ๋„ฃ์–ด์ฃผ๋ฉด ์–ด์ฐจํ”ผ ๋ฐ˜๋ณต๋ฌธ์ด ์ž‘์€์ˆ˜๋ถ€ํ„ฐ ๋Œ์•„๊ฐ€๋‹ˆ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋œ๋‹ค.

 

์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘์ด๋ฏ€๋กœ +1์„ ํ•ด์„œ ๋ช‡๋ฒˆ์งธ ์‹œ๊ณ„์ˆ˜์ธ์ง€ ์ฐพ๊ฒŒ ํ–ˆ๋‹ค.

 


 

15970. N๋ฒˆ์งธ ํฐ ์ˆ˜

 

 

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int N, x;
    cin >> N;
    for (int i=0; i<N; i++){
        vector<int> v;
        for (int j=0; j<10; j++){
            cin >> x;
            v.push_back(x);
            }
        sort(v.rbegin(),v.rend());
        cout << v[2] << endl;
    }
}

 

๊ทธ๋ƒฅ ๋ฒกํ„ฐ์— ์ž…๋ ฅ๋ฐ›๊ณ  ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•œ ๋’ค index 2 ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

๋‹ค๋งŒ ์ฒ˜์Œ ํ•  ๋•Œ ๋งˆ์ง€๋ง‰์— endl์„ ์•ˆ๋ถ™์˜€๋‹ค๊ฐ€ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ์—ˆ๋‹ค. ์ฃผ์˜!

 


 

15970. ํ™”์‚ดํ‘œ ๊ทธ๋ฆฌ๊ธฐ

 

 

2์ฐจ์› ๋ฒกํ„ฐ๋กœ N๊ฐœ ์ ๋“ค์˜ (์œ„์น˜, ์ƒ‰๊น”)์„ ์ž…๋ ฅ๋ฐ›๊ณ ,

์œ„์น˜๊ฐ€ i์ธ ํ•œ ์ ์— ๋Œ€ํ•ด ์ƒ‰๊น”์ด ๊ฐ™์€ ์  j๋“ค๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ check์— ์ €์žฅํ•œ ๋‹ค์Œ,

check์˜ ์ตœ์†Ÿ๊ฐ’์„ sum์— ์ €์žฅํ•ด์ฃผ๋Š” ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค.

 

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() {
    int N, x;
    cin >> N;
    int sum=0;
    vector<vector<int>> v;
    for (int i=0; i<N; i++){
        vector<int> v2;
        cin >> x;
        v2.push_back(x);
        cin >> x;
        v2.push_back(x);
        v.push_back(v2);
    }
    for (int i=0; i<N; i++){
        vector<int> check;
        for (int j=0; j<N; j++){
            if ((i!=j)&(v[i][1]==v[j][1])){
                check.push_back(abs(v[i][0]-v[j][0]));
            }
        }
        if (!check.empty()){sum = sum + *min_element(check.begin(),check.end());}
    }
    cout << sum;
}

 

i์— ๋Œ€ํ•ด j์ ๋“ค์„ ์ฒดํฌํ•  ๋•Œ ์ž๊ธฐ ์ž์‹ ์€ ์ฒดํฌํ•˜์ง€ ์•Š๋„๋ก i!=j ๋ผ๋Š” ์กฐ๊ฑด์„ ๊ฑธ์–ด์ฃผ๋Š” ๊ฒƒ ์ •๋„๊ฐ€ ํ•ต์‹ฌ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

์ฒ˜์Œ์— ์ด๊ฑฐ ๋นผ๋จน์—ˆ๋‹ค๊ฐ€ sum์ด 0๋‚˜์™€์„œ ์˜ค์ž‰? ํ–ˆ๋‹ค..ใ…Žใ…Ž

 

 


 

15970. ํ™”์‚ดํ‘œ ๊ทธ๋ฆฌ๊ธฐ

 

 

์œ„์˜ ๋ฌธ์ œ์™€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค๋ฉด..

์ ์ด 10๋งŒ๊ฐœ๊ฐ€ ์žˆ์„ ๋•Œ๋„ ์ œํ•œ ์‹œ๊ฐ„ 1์ดˆ ์•ˆ์— ๋™์ž‘ํ•ด์•ผ ํ•œ๋‹ค.

์œ„์˜ ๋ฌธ์ œ์—์„œ ์“ด ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋„ฃ์—ˆ๋”๋‹ˆ 21์ ์„ ๋ฐ›์•˜๋‹ค.

 

์ด ๋ฌธ์ œ์˜ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ๋‹ค.

#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>

using namespace std;

int main() {
    iostream::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int N;
    cin >> N;
    long long int sum = 0;
    unordered_map<int, vector<int>> v;

    for (int i = 0; i < N; i++) {
        int x, y;
        cin >> x >> y;
        v[y].push_back(x);
    }

    for (auto& entry : v) {
        vector<int>& xValues = entry.second;
        sort(xValues.begin(), xValues.end());
        if (xValues.size() > 1) {
            for (vector<int>::size_type i = 1; i < xValues.size() - 1; i++) {sum += min(xValues[i] - xValues[i - 1], xValues[i + 1] - xValues[i]);}
            sum += xValues[1] - xValues[0] + xValues[xValues.size() - 1] - xValues[xValues.size() - 2];
        }
    }

    cout << sum;
}

 

sum์„ ๊ผญ long long int๋กœ ์„ค์ •ํ•˜์ž.. ๊ทธ๋ƒฅ int๋กœ ํ–ˆ๋‹ค๊ฐ€ ๊ณ„์† 21์  ๋‚˜์™€์„œ ์•  ๋จน์—ˆ๋‹คใ… ใ… 

 

์šฐ์„  unordered_map<int, vector<int>>๋กœ v๋ฅผ ์„ ์–ธํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  x, y๋ฅผ ์ž…๋ ฅ ๋ฐ›์•„ v[y].push_back(x)๋กœ v์— ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์—ˆ๋Š”๋ฐ, ์ด๋Š” intํ˜• y ์ขŒํ‘œ ๊ฐ’์„ ํ‚ค๋กœ, ํ•ด๋‹น y ์ขŒํ‘œ์— ๋Œ€์‘๋˜๋Š” x ์ขŒํ‘œ๋“ค์„ vector<int> ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค.

 

๋”ฐ๋ผ์„œ ์ƒ‰๊น”๋กœ ์œ„์น˜ ๊ฐ’๋“ค์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

for (auto& entry : yCoordinates)์€ C++11 ์ดํ›„๋ถ€ํ„ฐ ์ง€์›ํ•˜๋Š” range-based for loop ๋ผ๊ณ  ํ•œ๋‹ค.

v์˜ ๊ฐ ์š”์†Œ(entry)๋“ค์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•˜๊ฒ ๋‹ค๋Š” ๋œป์ด๋‹ค.
auto ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ถ”๋ก ํ•˜๊ฒŒ ํ•˜๊ณ , &๋Š” ์ฐธ์กฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๋Š”๋ฐ, ์•ˆ์จ์ฃผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.

 

vector<int>& xValues = entry.second;์€ entry.second์— ํ•ด๋‹นํ•˜๋Š” vector<int>๋ฅผ xValues๋ผ๋Š” ์ด๋ฆ„์˜ ์ฐธ์กฐ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ ์ƒ‰๊น”๋งˆ๋‹ค for๋ฌธ์ด ๋ฐ˜๋ณต๋˜๊ณ , for๋ฌธ ์•ˆ์—์„œ ํ•ด๋‹น ์ƒ‰๊น”์— ํ•ด๋‹นํ•˜๋Š” ์œ„์น˜ ๊ฐ’๋“ค๋งŒ์„ ๊ฐ€์ง€๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์œ„์น˜ ๊ฐ’๋“ค์„ ์ •๋ ฌํ•œ ํ›„ ์ขŒ/์šฐ์™€ ๋บ€ ๊ฐ’ ์ค‘ min์„ sum์— ํ•ฉํ•˜๊ฒŒ ํ–ˆ๋‹ค.

[i], [i-1], [i+1]์„ ๊ฐ€์ง€๊ณ  for๋ฌธ์„ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋งจ ์•ž๊ณผ ๋งจ ๋์˜ ๊ฐ’๋“ค(xValues[0], xValues[xValues.size()-1])์€ ๋”ฐ๋กœ ๊ณ„์‚ฐํ–ˆ๋‹ค.

 

 


 

20186. ์ˆ˜ ๊ณ ๋ฅด๊ธฐ

 

 

 ์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ์ด๊ฒŒ ๋ฌด์Šจ ์†Œ๋ฆฌ์•ผ? ์‹ถ์—ˆ๋Š”๋ฐ, ์ดํ•ด๊ฐ€ ๋˜๊ณ  ๋‚˜๋‹ˆ

๊ทธ๋ƒฅ ์ œ์ผ ํฐ ์ˆ˜ K๊ฐœ ๋”ํ•œ ๋‹ค์Œ 0+1+2+..+(K-1)๋ฅผ ๋นผ๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.

 

์ƒ๊ฐํ•œ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    iostream::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int N, K, x;
    cin >> N >> K;
    vector<int> v;
    for (int i=0; i<N; i++) {
        cin >> x;
        v.push_back(x);
    }
    sort(v.rbegin(), v.rend());
    int sum = 0;
    for (int i=0; i<K; i++) {sum += v[i] - i;}
    cout << sum;
}

 

๋”ํ•˜๊ณ  ๋นผ๋Š” ๊ฒƒ๋„ v[i] - i๋กœ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•ด์ฃผ๋‹ˆ ๊ฐ„๋‹จํ–ˆ๋‹ค.

 

๋!!

 

๋‹คํ–ˆ๋‹ค!!