728x90

๋ฌธ์ œ

1์€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์นธ, 0์€ ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ์นธ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

(1,1)์—์„œ ์ถœ๋ฐœํ•˜์—ฌ (N,M)์˜ ์œ„์น˜๋กœ ์ด๋™ํ•  ๋•Œ ์ง€๋‚˜์•ผ ํ•˜๋Š” ์ตœ์†Œ ์นธ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ 1

4 6
101111
101010
101011
111011

์ถœ๋ ฅ 1

15

์ฝ”๋“œ

#include<iostream>
#include<queue>
#include<algorithm>
#define MAX 101

using namespace std;

int MAP[MAX][MAX];
int visited[MAX][MAX];
int dist[MAX][MAX];
int arrow[4][2] = { {1,0},{-1,0},{0,1},{0,-1} };
int N, M;
pair<int, int> startP, endP;

queue < pair<int, int>> Q;

void BFS() {
    
    Q.push(make_pair(startP.first, startP.second));

    dist[startP.first][startP.second]++;
    visited[startP.first][startP.second] = 1;

    while (!Q.empty()) {
        int y = Q.front().first;
        int x = Q.front().second;
        Q.pop();
        //์ขŒ์šฐ์œ„์•„๋ž˜ ํƒ์ƒ‰
        for (int i = 0; i < 4; i++) {
            int ny = y + arrow[i][0];
            int nx = x + arrow[i][1];


            if ((nx >= 0 &&nx < M) && (ny >= 0 && ny < N)
                && MAP[ny][nx] == 1 &&!visited[ny][nx]) {
                visited[ny][nx] = 1;
                Q.push(make_pair(ny, nx));
                dist[ny][nx] = dist[y][x] + 1;
            }
        }
    }
    cout << dist[endP.first-1][endP.second-1];
}


void input() {
    string num;
    for (int i = 0; i < N; i++) {
        cin >> num;
        for (int j = 0; j < M; j++) {
            MAP[i][j] = num[j]-'0';
        }
    }
}

int main() {

    cin.tie(NULL); cout.tie(NULL); ios::sync_with_stdio(false);

    int tmp;
    cin >> N>>M;
    startP = make_pair(0, 0);
    endP = make_pair(N, M);
    
    input();
    BFS();

    return 0;
}

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

์ € input ํ•จ์ˆ˜์—์„œ cin์„ ํ†ตํ•ด MAP์„ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค.

์ฃผ์˜ํ•  ์ ์€ ํ•œ ์ค„๋‹น ๋ถ™์–ด์žˆ๋Š” ์ƒํƒœ๋กœ ๋ฐ›์•„์™€์„œ cin์œผ๋กœ ๋ฐ›์€ ๋‹ค์Œ ๋Š์–ด์„œ ์ €์žฅํ•ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

void input() {
    string num;
    for (int i = 0; i < N; i++) {
        cin >> num;
        for (int j = 0; j < M; j++) {
            MAP[i][j] = num[j]-'0';
        }
    }
}

string์œผ๋กœ ๋ฐ›์€ ๋‹ค์Œ string์—์„œ ์ธ์ž๋กœ ์ ‘๊ทผํ•ด์ฃผ๋ฉด char ํ˜•์ด์—ฌ์„œ charํ˜•์„ int๋กœ ๋ฐ”๊พธ๋ ค๋ฉด '0'์˜ ์ˆซ์ž๋ฅผ ๋นผ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋‹ค์Œ BFS ํƒ์ƒ‰์„ ํ†ตํ•ด ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„์ฃผ๋ฉด ๋˜๋Š”๋ฐ BOJ 6087๋ฒˆ ๋ ˆ์ด์ € ํ†ต์‹ ๊ณผ ๋ฌธ์ œ๊ฐ€ ๋งค์šฐ ํก์‚ฌํ•ฉ๋‹ˆ๋‹ค.

https://dana3711.tistory.com/90

 

[C++] BOJ 6087๋ฒˆ: ๋ ˆ์ด์ € ํ†ต์‹ 

๋ฌธ์ œ ๊ฑฐ์šธ์„ ์„ค์น˜ํ•˜๋ฉด ๋ฐฉํ–ฅ์„ 90๋„ ํšŒ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. *์€ ๋ฒฝ์œผ๋กœ ๋šซ๊ณ  ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์—†๋‹ค. ๊ฑฐ์šธ์„ ์ตœ์†Œ๋กœ ์„ค์น˜ํ•˜์—ฌ์„œ ์ฒ˜์Œ ์‹œ์ž‘์ง€์  C์—์„œ ๋์ง€์  C์— ๋„๋‹ฌํ• ๋•Œ๊นŒ์ง€ ๊ฐ€์•ผํ•œ๋‹ค. ์ตœ์†Œ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ

dana3711.tistory.com

๋‹ค๋งŒ ๋‹ค๋ฅธ์ ์€ ๋ชฉํ‘œ ์ง€์ ๊นŒ์ง€ ๊ฐ€๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ๋น„์šฉ์„ ์ถœ๋ ฅํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ

if ((nx >= 0 &&nx < M) && (ny >= 0 && ny < N)&& MAP[ny][nx] == 1 &&!visited[ny][nx]) 
{
    visited[ny][nx] = 1;
    Q.push(make_pair(ny, nx));
    dist[ny][nx] = dist[y][x] + 1;
}

4๋ฐฉํ–ฅ ํƒ์ƒ‰์„ ํ• ๋•Œ ๋งŒ์•ฝ ๋งต ์•ˆ์— ์žˆ๊ณ ((nx >= 0 &&nx < M) && (ny >= 0 && ny < N)), ๊ทธ ์นธ์ด ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์นธ์ด๋ผ๋ฉด(MAP[ny][nx] == 1) ํ•ด๋‹น ์นธ์„ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜์„ ๋•Œ

ํ•ด๋‹น ์นธ์œผ๋กœ ์ž๋ฆฌ๋ฅผ ์ด๋™ํ•˜๊ณ  ๊ฐ€๋Š” ๋น„์šฉ์„ +1 ํ•ด์ค๋‹ˆ๋‹ค.

 

 

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

๊ฑฐ์šธ์„ ์„ค์น˜ํ•˜๋ฉด ๋ฐฉํ–ฅ์„ 90๋„ ํšŒ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

*์€ ๋ฒฝ์œผ๋กœ ๋šซ๊ณ  ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์—†๋‹ค.

๊ฑฐ์šธ์„ ์ตœ์†Œ๋กœ ์„ค์น˜ํ•˜์—ฌ์„œ ์ฒ˜์Œ ์‹œ์ž‘์ง€์  C์—์„œ ๋์ง€์  C์— ๋„๋‹ฌํ• ๋•Œ๊นŒ์ง€ ๊ฐ€์•ผํ•œ๋‹ค.

์ตœ์†Œ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ์šธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ผ

 

์ž…๋ ฅ 1

7 8
.......
......C
......*
*****.*
....*..
....*..
.C..*..
.......

์ถœ๋ ฅ 1

3

์ฝ”๋“œ

#include<iostream>
#include<algorithm>
#include<utility>
#include<queue>
#include<vector>

using namespace std;

//6087๋ฒˆ ๋ ˆ์ด์ € ํ†ต์‹ 

char MAP[101][101];
int visited[101][101];
int w, h;
int arrow[4][2] = { {1,0},{-1,0},{0,1},{0,-1} };

pair<int, int> startP, endP;
queue<pair<int,int>> cntDir;
queue < pair<int, int>> Q;
void BFS() {
    for (int i = 0; i < 4; i++) {
        Q.push(make_pair(startP.first, startP.second));
        cntDir.push(make_pair(0, i));
    }
    visited[startP.first][startP.second] = 0;

    while (Q.empty() == 0) {
        int y = Q.front().first;
        int x = Q.front().second;
        int cnt = cntDir.front().first;
        int dir = cntDir.front().second;
        Q.pop();
        cntDir.pop();
        //์ขŒ์šฐ์œ„์•„๋ž˜ ํƒ์ƒ‰
        for (int i = 0; i < 4; i++) {
            int ny = y + arrow[i][0];
            int nx = x + arrow[i][1];
            int nCnt = cnt;

            if (nx <0 || nx >= w || ny < 0 || ny >=h) continue;
            if (MAP[ny][nx] == '*') continue;
            if (dir != i) nCnt++;
            if (visited[ny][nx] >= nCnt) {
                visited[ny][nx] = nCnt;
                Q.push(make_pair(ny, nx));
                cntDir.push(make_pair(nCnt, i));
            }
        }
    }
    cout << visited[endP.first][endP.second];
}

void input() {
    bool isFirst = true;
    for (int i = 0; i < h; i++) {
        for (int j = 0; j < w; j++) {
            cin >> MAP[i][j];
            if (MAP[i][j] == 'C') {
                (isFirst) ? startP = make_pair(i, j) : endP = make_pair(i, j);
                isFirst = false;
            }
            visited[i][j] = 10001;
        }
    }
}

int main() {

    cin.tie(NULL);
    cout.tie(NULL);
    ios::sync_with_stdio(false);

    cin >> w >> h;
    
    input();
    BFS();


    return 0;
}

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

void input() {
    bool isFirst = true;
    for (int i = 0; i < h; i++) {
        for (int j = 0; j < w; j++) {
            cin >> MAP[i][j];
            if (MAP[i][j] == 'C') {
                (isFirst) ? startP = make_pair(i, j) : endP = make_pair(i, j);
                isFirst = false;
            }
            visited[i][j] = 10001;
        }
    }
}

๋จผ์ € input ํ•จ์ˆ˜์—์„œ cin์„ ํ†ตํ•ด MAP์„ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค.

๊ทธ ์ค‘ ๋งŒ์•ฝ C๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋‹ค๋ฉด ์ฒ˜์Œ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํŒ๋‹จํ•ด์„œ ์ฒ˜์Œ์ด๋ผ๋ฉด startP์— ํ•ด๋‹น ์œ„์น˜๋ฅผ ๋„ฃ๊ณ , ์ฒ˜์Œ์ด ์•„๋‹ˆ๋ผ๋ฉด endP์— ํ•ด๋‹น ์œ„์น˜๋ฅผ ๋„ฃ๋Š”๋‹ค.

void BFS() {
    for (int i = 0; i < 4; i++) {
        Q.push(make_pair(startP.first, startP.second));
        cntDir.push(make_pair(0, i));
    }
    visited[startP.first][startP.second] = 0;

    while (Q.empty() == 0) {
        int y = Q.front().first;
        int x = Q.front().second;
        int cnt = cntDir.front().first;
        int dir = cntDir.front().second;
        Q.pop();
        cntDir.pop();
        //์ขŒ์šฐ์œ„์•„๋ž˜ ํƒ์ƒ‰
        for (int i = 0; i < 4; i++) {
            int ny = y + arrow[i][0];
            int nx = x + arrow[i][1];
            int nCnt = cnt;

            if (nx <0 || nx >= w || ny < 0 || ny >=h) continue;
            if (MAP[ny][nx] == '*') continue;
            if (dir != i) nCnt++;
            if (visited[ny][nx] >= nCnt) {
                visited[ny][nx] = nCnt;
                Q.push(make_pair(ny, nx));
                cntDir.push(make_pair(nCnt, i));
            }
        }
    }
    cout << visited[endP.first][endP.second];
}

ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•  ์œ„์น˜์ธ startP์˜ ์œ„์น˜๋ฅผ 4๋ฒˆ Q์— ์˜ฎ๊ฒจ๋‹ด์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ ์œ„์น˜์—์„œ ์œ„,์•„๋ž˜,์™ผ์ชฝ,์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์„ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉํ–ฅ์„ ์ €์žฅํ•ด์ค๋‹ˆ๋‹ค. ๋ฐฉํ–ฅ์ด ๋‹ค๋ฅด๋‹ค๋ฉด ๊ฑฐ์šธ์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋”ํ•ด์ค˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 

๊ทธ ๋‹ค์Œ Q๊ฐ€ ๋นŒ๋•Œ๊นŒ์ง€ while๋ฌธ์„ ๋Œ๋ฆฝ๋‹ˆ๋‹ค. Q์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋ฅผ ๋ณ€์ˆ˜์— ๋‹ด๊ณ  ์ขŒ์šฐ์œ„์•„๋ž˜ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํƒ์ƒ‰์—์„œ *์ธ ๋ฒฝ์„ ๋งŒ๋‚˜๊ฑฐ๋‚˜ ๋งต์„ ๋ฒ—์–ด๋‚˜๋ฉด ํƒ์ƒ‰์„ ๊ฑด๋„ˆ๋›ฐ๊ณ , ๋งŒ์•ฝ ๊ฐ€๋˜ ๋ฐฉํ–ฅ๊ณผ ํ˜„์žฌ ๋ฐฉํ–ฅ์ด ๋งž์ง€ ์•Š๋‹ค๋ฉด ๊ฑฐ์šธ์„ ๋”ํ•ด์ค๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฐฉ๋ฌธํ•œ ์œ„์น˜์—์„œ์˜ ๊ฑฐ์šธ์„ ์‚ฌ์šฉํ•œ ๊ฐฏ์ˆ˜๋ฅผ visited[][] ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ธฐ์— ๋งŒ์•ฝ ์‚ฌ์šฉํ•œ ๊ฐฏ์ˆ˜๊ฐ€ ํ˜„์žฌ ์นด์šดํŠธ๋ณด๋‹ค ๋†’๋‹ค๋ฉด ์ตœ์†Œ๋กœ ์‚ฌ์šฉํ•ด์•ผํ•˜๊ธฐ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝํ•ด์ค๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋์ง€์ ์— ๋„๋‹ฌํ• ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋ฐ˜๋ณตํ•˜์—ฌ์„œ visited[๋์ง€์ .y][๋์ง€์ .x] ์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ฉด ๋‹ต์ด ๋ฉ๋‹ˆ๋‹ค.

 

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

๋ฐ˜์‘ํ˜•
728x90

 

๋ฌธ์ œ

์ฒซ์งธ ์ค„์— n์ด ์ฃผ์–ด์ง„๋‹ค. n์€ 1,000,000,000,000,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

 

์ž…๋ ฅ 1

1000

์ถœ๋ ฅ 1

228875

์ฝ”๋“œ

#include<iostream>
#include<cmath>

using namespace std;

//2749๋ฒˆ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ 3
//ํ”ผ์‚ฌ๋…ธ ์ฃผ๊ธฐ๋ฅผ ์ด์šฉ

long long arr[1500050];     //๋ฉ”๋ชจ์ด์ œ์ด์…˜
int m = 1000000;            //๋‚˜๋ˆ„๋Š” ์ˆ˜
int cycle;

int cycle_func() {
    int k=0,tmp=m;
    while (tmp > 1) {
        tmp /= 10;
        k++;
    }

    return 15 * pow(10, k - 1);
}

void pisano_fibo() {
    arr[0] = 0;
    arr[1] = 1;
    //ํŒŒ์‚ฌ๋…ธ ์ฃผ๊ธฐ์— ์˜ํ•˜์—ฌ 1500000์˜ ๊ฐ’๋“ค์ด ๋ฐ˜๋ณต๋œ ํ›„์— ๋‹ค์‹œ ์žฌ ๋ฐ˜๋ณต๋จ
    cycle = cycle_func();
    for (int i = 0; i < cycle; i++) {
        arr[i + 2] = (arr[i+1]+arr[i])%m;
    }
}

int main() {

    cin.tie(NULL);cout.tie(NULL);
    ios::sync_with_stdio(false);

    long long n;
    cin >> n;
    pisano_fibo();
    cout << arr[n % cycle];

    return 0;
}

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

ํ”ผ์‚ฌ๋…ธ ์ฃผ๊ธฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‘ธ๋Š” ๋ฌธ์ œ์ด๋‹ค ๊ธฐ๋ณธ์ ์œผ๋กœ n์˜ ๋ฒ”์œ„๊ฐ€ 1,000,000,000,000,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์— ์“ฐ๋˜ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ์„œ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์€ ์‹œ๊ฐ„์ด ๋งค์šฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฏ€๋กœ ์“ธ์ˆ˜๊ฐ€ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ํ”ผ์‚ฌ๋…ธ ์ฃผ๊ธฐ๋ฅผ ํ†ตํ•ด ๋ฐ˜๋ณต ์ฃผ๊ธฐ๋ฅผ ์ฐพ๊ณ  ๊ทธ ์ฃผ๊ธฐ๋™์•ˆ์˜ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์—์„œ m์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’๋“ค์„ ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค. ๊ทธ ํ›„ ์ €์žฅํ•œ ๋ฐฐ์—ด์—์„œ ์ฐพ๊ณ ์ž ํ•˜๋Š” n๋ฒˆ์งธ๊ฐ€ ์ฃผ๊ธฐ์—์„œ ๋ช‡๋ฒˆ์งธ ์ˆซ์ž์ธ์ง€ ์ฐพ์•„๋‚ด์„œ ํ•ด๋‹น ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ํ”ผ์‚ฌ๋…ธ ์ฃผ๊ธฐ๋Š”

๋‚˜๋ˆ„๋Š” ๊ฐ’์„ M์ด๋ผ๊ณ  ์ง€์นญํ–ˆ์„ ๋•Œ,

M=10^k , cycle = 15 x 10^(k-1)

์ด๋‹ค.

 

 

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

๋‘ ๋‹ค๊ฐํ˜•์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋‘ ๋‹ค๊ฐํ˜•์˜ ๋ฏผ์ฝ”ํ”„์Šคํ‚ค ํ•ฉ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋งŒ์•ฝ ๋ฏผ์ฝ”ํ”„์Šคํ‚ค ํ•ฉ์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋‹ค๊ฐํ˜•์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค๋ฉด ๋‹ค์Œ์˜ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ํ•˜๋‚˜์˜ ๋‹ค๊ฐํ˜•๋งŒ์„ ๊ตฌํ•˜๋„๋ก ํ•œ๋‹ค. ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์€ ๊ฒƒ์ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฒƒ์ด๋‹ค.

 

์ž…๋ ฅ 1

3 3
0 0
1 0
1 1
0 1
0 0
1 0

์ถœ๋ ฅ 1

5
0 0
2 0
2 1
1 2
0 1

์ฝ”๋“œ

#include<iostream>
#include<algorithm>
#include<vector>
#define x first
#define y second
using namespace std;

//2244๋ฒˆ ๋ฏผ์ฝ”ํ”„์Šคํ‚ค ํ•ฉ
//Convex Hull(CCW(Counter Clock Wise)) ์‚ฌ์šฉ

typedef pair<long long, long long> Point2f;
Point2f a[1010];
Point2f b[1010];

//counter clock wise : ์ขŒํšŒ์ „ํ•˜๋Š”์ง€ ํŒ๋‹จ
//๋ฒกํ„ฐ AB์™€ ๋ฒกํ„ฐ AC์˜ CW/CCW
// 0๋ณด๋‹ค ํฌ๋ฉด ๋ฐ˜์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ๋„๋Š” ๊ฒƒ, 0๋ณด๋‹ค ์ž‘์œผ๋ฉด ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ๋„๋Š” ๊ฒƒ
//int์— 1LL์„ ๊ณฑํ•ด์ฃผ๋ฉด long long์œผ๋กœ ํ˜•๋ณ€ํ™˜์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ
int ccw(Point2f a, Point2f b, Point2f c) {
    long long res = a.x * b.y + b.x * c.y + c.x * a.y;
    res -= b.x * a.y + c.x * b.y + a.x * c.y;
    if (res > 0) return 1;          //์‹œ๊ณ„ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ
    if (res) return -1;             //์‹œ๊ณ„ ๋ฐฉํ–ฅ
    return 0;                           //ํ‰๋ฉด์ƒ
}

long long dist(Point2f a, Point2f b) {
    long long dx = 1LL*a.x - b.x;
    long long dy = 1LL * a.y - b.y;
    return dx * dx + dy * dy;
}

int main() {

    vector<Point2f> arr;
    int aNum, bNum;
    int xTmp, yTmp;
    int pIdx = 0;
    cin >> aNum >> bNum;
    pIdx = aNum * bNum;
    for (int i = 0; i < aNum; i++) {
        cin >> xTmp >> yTmp;
        a[i].x = xTmp; a[i].y = yTmp;
    }
    for (int i = 0; i < bNum; i++) {
        cin >> xTmp >> yTmp;
        b[i].x = xTmp; b[i].y = yTmp;
    }
    //๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ ๋“ค vector ์ œ์ž‘
    for (int i = 0; i < aNum; i++) {
        for (int j = 0; j < bNum; j++) {
            arr.push_back(Point2f{ a[i].x + b[j].x,a[i].y + b[j].y });
        }
    }

    //arr์˜ ์ตœ์†Œ ๊ฐ’์„ ์ฐพ์•„์„œ 0๋ฒˆ ์ž๋ฆฌ์™€ ๋ฐ”๊ฟˆ(0๋ฒˆ์„ ์ œ์ผ ์ž‘์€ ๊ฐ’์œผ๋กœ ์„ค์ •)
    swap(arr[0], *min_element(arr.begin(), arr.end()));
    //0๋ฒˆ์„ ์ œ์™ธํ•œ ์ ๋“ค์„ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ์ •๋ ฌ
    //[&]{}๋Š” ๋žŒ๋‹ค์‹์œผ๋กœ์จ ํ•ด๋‹น ํ•จ์ˆ˜์—๋”ฐ๋ผ์„œ sort๋ฅผ ํ• ์ง€ ๋ง์ง€ ๊ฒฐ์ •ํ•จ
    sort(arr.begin() + 1, arr.end(), [&](Point2f& a, Point2f& b) {
        int cw = ccw(arr[0], a, b);
        //cw๊ฐ€ 0 ์ด์ƒ์ด๋ฉด ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์ด๊ณ  true๋ฅผ ๋ฐ˜ํ™˜ 0์ด๋ฉด false ๋ฐ˜ํ™˜, cw๊ฐ€ -1์ธ ๊ฒฝ์šฐ(์‹œ๊ณ„ ๋ฐฉํ–ฅ) if๋ฌธ์„ ๋“ค์–ด์˜ค์ง€ ์•Š์Œ
        if (cw) return cw > 0;          
        return dist(arr[0], a) < dist(arr[0], b); //cw๊ฐ€ -1์ธ ๊ฒฝ์šฐ ๊ธฐ์ค€์  arr[0]์—์„œ์˜ ๊ฑฐ๋ฆฌ์ˆœ์œผ๋กœ ์ •๋ ฌ
        });

    vector<Point2f> hull;
    for (int i = 0; i < arr.size();i++) {
        while (hull.size() >= 2 && ccw(hull[hull.size() - 2], hull.back(), arr[i]) <= 0) {
            hull.pop_back();
        }
        hull.push_back(arr[i]);
    }
    cout << hull.size() << "\n";
    for (int i = 0; i < hull.size(); i++) {
        cout << hull[i].x << " " << hull[i].y << "\n";
    }

    return 0;
}

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

convex hull๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

convex hull์€ ์ฃผ์–ด์ง„ ์ ์—์„œ ์™ธ๊ณฝ์„ ์„ ์ด๋ฃจ๋Š” ์ ๋“ค์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ๋ฐ ๋ฏผ์ฝ”ํ”„์Šคํ‚ค์˜ ํ•ฉ ๋˜ํ•œ ๊ณต๊ฐ„์˜ ํ•ฉ์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— convex hull ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค.

์ฝ”๋“œ์˜ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์€ https://justicehui.github.io/ioi/2019/05/21/BOJ2244/ ์—์„œ ๋”ฐ์™”๋‹ค.

๋ช‡๊ฐ€์ง€ ๋žŒ๋‹ค์‹์ด๋ผ๋˜์ง€ auto์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ๋‚˜์—๊ฒŒ ์–ด๋ ค์›Œ์„œ for๋ฌธ์œผ๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์ฃผ์„์„ ๋‹ฌ์•„์„œ ์ง„ํ–‰ํ•ด๋ณด์•˜๋‹ค. ๊ธฐ์กด์˜ ๋‹ค๋ฅธ๊ณณ์—์„œ ์ฐพ์•„์„œ convex hull์„ ๊ตฌํ˜„ํ•ด์„œ ๋„ฃ์–ด๋ณด์•˜๋Š”๋ฐ ์˜ˆ์ œ๋ฅผ ๋„ฃ์–ด๋ณด์•˜์„ ๋•Œ๋Š” ์ถœ๋ ฅ ๊ฒฐ๊ณผ๊ฐ€ ์ž˜๋‚˜์™”์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐฑ์ค€์—์„œ ํ…Œ์ŠคํŠธ ํ• ๋•Œ๋งˆ๋‹ค 

์ด๋Ÿฌํ•œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋‚˜ ์ถœ๋ ฅ ์ดˆ๊ณผ๊ฐ€ ๋‚˜์™€์„œ ๋ญ๊ฐ€ ๋ฌธ์ œ์ธ์ง€ ๋ชฐ๋ผ์„œ ๋‹ค๋ฅธ ๋ถ„ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๊ณ  ์ฐธ๊ณ ํ•ด์„œ ํ•ด๋ณด์•˜๋Š”๋ฐ ์•„๋งˆ sortingํ•˜๋Š” ๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚œ๊ฒŒ ์•„๋‹๊นŒ ์‹ถ๋‹ค..

convex hull ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ๊ธ€์€ https://kbw1101.tistory.com/50 ์—ฌ๊ธฐ ๋ธ”๋กœ๊ทธ์— ์•„์ฃผ ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ๋‹ค.

 

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

๋™๊ตด์— ์žˆ๋Š” ๋ฏธ๋„ค๋ž„์˜ ๋ชจ์–‘๊ณผ ๋‘ ์‚ฌ๋žŒ์ด ๋˜์ง„ ๋ง‰๋Œ€์˜ ๋†’์ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋ชจ๋“  ๋ง‰๋Œ€๋ฅผ ๋˜์ง€๊ณ  ๋‚œ ์ดํ›„์— ๋ฏธ๋„ค๋ž„ ๋ชจ์–‘์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ 1

5 6
. . . . . .
. . X X . .
. . X . . .
. X X X X .
1
3

์ถœ๋ ฅ 1

. . . . . .
. . . . . .
. . X X . .
. . X X . .
. X X X X .

์ฝ”๋“œ

#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
#define y first
#define x second
using namespace std;

//2933๋ฒˆ ๋ฏธ๋„ค๋ž„

//2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ
char arr[101][101];
int visited[101][101];      //dfs๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฌธ ๋ฐฐ์—ด
int R, C;
vector<pair<int,int>> cluster;
int arrow[4][2] = { {1,0},{-1,0},{0,1},{0,-1} };

void DFS(int yIdx, int xIdx) {
    if (arr[yIdx][xIdx] == '.' || visited[yIdx][xIdx]) return;
    visited[yIdx][xIdx] = true;
    cluster.push_back({yIdx,xIdx});
    //์ขŒ์šฐ์œ„์•„๋ž˜ ํƒ์ƒ‰
    for (int i = 0; i < 4; i++) {
        int ny = yIdx + arrow[i][0];
        int nx = xIdx + arrow[i][1];    
        if (nx >= 0 && nx < C && ny >= 0 && ny < R)
            DFS(ny, nx);
    }
}

void checkCluster() {
    memset(visited, 0, sizeof(visited));
    for (int a = 0; a < R; a++) {
        for (int b = 0; b < C; b++) {
            if (arr[a][b] == '.' || visited[a][b]) continue;
            cluster.clear();
            DFS(a,b);
            vector<int> low(C, -1);     //vector(์ปจํ…Œ์ด๋„ˆ ํฌ๊ธฐ, ๊ฐ๊ฐ ํ• ๋‹น๋  ๊ฐ’)
            for (int z = 0; z < cluster.size(); z++) {
                pair<int, int> p= cluster[z];
                low[p.x] = max(low[p.x], p.y);
                arr[p.y][p.x] = '.';
            }

            //์–ผ๋งˆ๋‚˜ ๋ฐ‘์œผ๋กœ ์˜ฎ๊ธธ์ง€ i์— ๋„ฃ๊ธฐ
            int lowmove = R;
            for (int i, j = 0; j < C; j++) {
                if (low[j] == -1) continue;
                i = low[j];

                //'.'์ด ์•„๋‹Œ๊ฒฝ์šฐ, ํƒ์ƒ‰ ๋†’์ด๊ฐ€ ๋†’์ด๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ
                while (i < R &&arr[i][j] == '.') {
                    i++;
                }
                lowmove = min(lowmove, i - low[j] - 1);
            }

            for (int i = 0; i < cluster.size(); i++) {
                pair<int, int> p = cluster[i];
                p.y += lowmove;
                arr[p.y][p.x] = 'x';
                visited[p.y][p.x] = true;
            }
        }
    }
    
}

void shoot(int orderNum,int height) {
    //์™ผ์ชฝ์ธ์ง€ ์˜ค๋ฅธ์ชฝ์ธ์ง€ ํŒ๋‹จ
    height = R - height;
    if (orderNum % 2 == 0) {
        for (int i = 0; i < C; i++) {
            if (arr[height][i] == 'x') {
                arr[height][i] = '.';
                break;
            }
        }
    }
    else {
        for (int i = C-1; i >= 0; i--) {
            if (arr[height][i] == 'x') {
                arr[height][i] = '.';
                break;
            }
        }
    }
    
    checkCluster();
}

int main() {
    
    cin.tie(NULL);
    cout.tie(NULL);
    ios::sync_with_stdio(false);


    cin >> R >> C;

    for (int i = 0; i < R; i++) {
        for (int j = 0; j < C; j++) {
            cin >> arr[i][j];
        }
    }
    int N,height=0;
    cin >> N;
    for (int i = 0; i < N; i++) {
        cin >> height;
        shoot(i, height);
    }

    for (int i = 0; i < R; i++) {
        for (int j = 0; j < C; j++) {
            cout << arr[i][j];
        }
        cout << "\n";
    }

    return 0;
}

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

checkCluster() ํ•จ์ˆ˜ ๋ถ€๋ถ„์€ https://100100e.tistory.com/152 ์ด ๋ธ”๋กœ๊ทธ ๋ถ„์˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์—ฌ์„œ ์ œ์ž‘ํ•˜์˜€๋‹ค. ์ œ์ผ ๋‚˜๋ž‘ ์ƒ๊ฐ์ด ๋น„์Šทํ•˜๊ธฐ๋„ ํ–ˆ๊ณ  ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ์ž‘์„ฑ๋˜์–ด์žˆ์–ด์„œ ์ข‹์•˜๋‹ค. checkCluster() ๋ถ€๋ถ„์„ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด๋ณผ๊นŒ ์‹ถ๋‹ค.

 memset(visited, 0, sizeof(visited));
    for (int a = 0; a < R; a++) {
        for (int b = 0; b < C; b++) {

 

checkCluster๋Š” ๋ถ€๋ฉ”๋ž‘์„ ๋˜์ง„ ํ›„์— ๋–จ์–ด์ง€๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋“ค์„ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜๋กœ์จ ์‹คํ–‰๋œ๋‹ค. ๋”ฐ๋ผ์„œ DFS๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด visited ๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์ค˜์•ผํ•œ๋‹ค. ๊ทธ๋ฅผ ์œ„ํ•ด memset ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์˜€๋‹ค. ๋‚˜๋จธ์ง€ for๋ฌธ์€ R x C ํฌ๊ธฐ์˜ ๋งต์„ for๋ฌธ์„ ํ†ตํ•ด ๋Œ๋ฆฐ๋‹ค.

if (arr[a][b] == '.' || visited[a][b]) continue;
cluster.clear();
DFS(a,b);

๊ทธ ๋‹ค์Œ์—๋Š” ํ•ด๋‹น ๋งต์˜ ์นธ์ด . ์œผ๋กœ ๋น„์–ด์žˆ๋Š” ์นธ์ด๊ฑฐ๋‚˜ ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ ๊ทธ๋Œ€๋กœ ๋ฐ‘์˜ ๊ณ„์‚ฐ์„ ํ•˜์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐ„๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ DFS ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ํ•ด๋‹น ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ขŒ์šฐ์œ„์•„๋ž˜๋ฅผ ํƒ์ƒ‰ํ•ด์„œ cluster ๋ฒกํ„ฐ์— ๋„ฃ๋Š”๋‹ค.

vector<int> low(C, -1);     //vector(์ปจํ…Œ์ด๋„ˆ ํฌ๊ธฐ, ๊ฐ๊ฐ ํ• ๋‹น๋  ๊ฐ’)
for (int z = 0; z < cluster.size(); z++) {
    pair<int, int> p= cluster[z];
    low[p.x] = max(low[p.x], p.y);
    arr[p.y][p.x] = '.';
}

๊ทธ ํ›„์—  low ๋ผ๋Š” ๋•…์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฒกํ„ฐ ๋ฐฐ์—ด์„ ์„ ์–ธํ•œ๋‹ค. low(C,-1) ์ด๋ ‡๊ฒŒ ์„ ์–ธํ•˜๋ฉด C ํฌ๊ธฐ ๋งŒํผ์„ -1์˜ ๊ฐ’์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค๋Š” ๋ง์ด๋‹ค. ๊ทธ ๋‹ค์Œ for๋ฌธ์„ ํ†ตํ•ด์„œ ์ €์žฅ๋œ cluster๋งŒํผ ๋Œ๋ ค์ฃผ๊ณ  ๋งŒ์•ฝ ํ•ด๋‹น ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋†’์ด ๊ฐ’์ธ p.y ๊ฐ’์ด ๋งŒ์•ฝ์— ๊ธฐ์กด์— ์ €์žฅ๋œ ๋†’์ด ๊ฐ’์ธ low[p.x]์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ํฐ ๊ฐ’์„ low[p.x]์— ์ €์žฅํ•ด์ค€๋‹ค. ์ €์žฅํ•œ ๋‹ค์Œ์—๋Š” ํ•ด๋‹น ๊ฐ’์€ ๋‚˜์ค‘์— ๋‹ค์‹œ ๋–จ์–ด์ง„ ํด๋Ÿฌ์Šคํ„ฐ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ค„ ๊ฒƒ์ž„์œผ๋กœ ๋ฏธ๋ฆฌ .์œผ๋กœ ๋ณ€๊ฒฝ ์‹œ์ผœ์ค€๋‹ค.

int lowmove = R;
for (int i, j = 0; j < C; j++) {
    if (low[j] == -1) continue;
    i = low[j];

    //'.'์ด ์•„๋‹Œ๊ฒฝ์šฐ, ํƒ์ƒ‰ ๋†’์ด๊ฐ€ ๋†’์ด๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ
    while (i < R &&arr[i][j] == '.') {
        i++;
    }
    lowmove = min(lowmove, i - low[j] - 1);
}

์–ผ๋งŒํผ ๋ฐ‘์œผ๋กœ ์˜ฎ๊ธธ์ง€ ๊ณ„์‚ฐํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. lowmove ๋ณ€์ˆ˜์—๋Š” ๊ฐ€์žฅ ๋งŽ์ด ๋‚ด๋ ค๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’ ๋†’์ด R๊ฐ’์„ ๋„ฃ์€ ๋‹ค์Œ ๋น„๊ตํ•ด๊ฐ€๋ฉด์„œ ์ž‘์œผ๋ฉด ๋ณ€๊ฒฝํ•˜๋Š” ํ˜•์‹์ด๋‹ค. if(low[j]==-1) continue; ์˜ ๊ฒฝ์šฐ ๋•…์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์—ฐ์‚ฐ์„ ํ•˜์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐ„๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ i = low[j];๋กœ ๋•…์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋†’์ด๋ฅผ ๋„ฃ๋Š”๋‹ค. ๊ทธ ํ›„ while๋ฌธ์„ ํ†ตํ•ด์„œ ๋งŒ์•ฝ ํ•ด๋‹น ์ขŒํ‘œ์˜ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋นˆ๊ณต๊ฐ„์ธ ๊ฒฝ์šฐ ๋‚ด๋ ค๊ฐ€์•ผํ•  ์นธ์˜ ๊ฐ’์ธ i๋ฅผ ++ํ•ด์ค€๋‹ค. ํ•ด๋‹น while๋ฌธ์ด ๊ธ‘๋‚˜๊ณ  ๋‚˜๋ฉด min ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ธฐ์กด์˜ lowmove ๊ฐ’๊ณผ i-low[j]-1์„ ๋น„๊ตํ•œ๋‹ค. arr[i][j]์˜ ๊ฒฝ์šฐ ์•„๊นŒ ์œ„์—์„œ .์œผ๋กœ ๋งŒ๋“ค์–ด๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๊ฐœ๊ฐ€ ๋” ์„ธ์–ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๋‚ด๋ ค๊ฐ€์•ผํ•  ์นธ์˜ ์ˆ˜ i ์—์„œ -1์„ ํ•œ ๋‹ค์Œ ๊ธฐ์กด ๋†’์ด์ธ low[j]๋ฅผ ๋นผ์ฃผ๋ฉด ๋‚ด๋ ค๊ฐ€์•ผํ•  ์นธ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค.

for (int i = 0; i < cluster.size(); i++) {
                pair<int, int> p = cluster[i];
                p.y += lowmove;
                arr[p.y][p.x] = 'x';
                visited[p.y][p.x] = true;
}

๋งˆ์ง€๋ง‰์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐฏ์ˆ˜ ๋งŒํผ for๋ฌธ์„ ๋Œ๋ ค์„œ lowmove ๋งŒํผ ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์˜ฎ๊ฒจ์ค€๋‹ค.

 

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

๋ฐฑ์ค€์ด๋Š” ๋™์ƒ์—๊ฒŒ "๊ฐ€์šด๋ฐ๋ฅผ ๋งํ•ด์š”" ๊ฒŒ์ž„์„ ๊ฐ€๋ฅด์ณ์ฃผ๊ณ  ์žˆ๋‹ค. ๋ฐฑ์ค€์ด๊ฐ€ ์ •์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ์™ธ์น ๋•Œ๋งˆ๋‹ค ๋™์ƒ์€ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฑ์ค€์ด๊ฐ€ ๋งํ•œ ์ˆ˜ ์ค‘์—์„œ ์ค‘๊ฐ„๊ฐ’์„ ๋งํ•ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ, ๊ทธ๋™์•ˆ ๋ฐฑ์ค€์ด๊ฐ€ ์™ธ์นœ ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜๊ฐœ๋ผ๋ฉด ์ค‘๊ฐ„์— ์žˆ๋Š” ๋‘ ์ˆ˜ ์ค‘์—์„œ ์ž‘์€ ์ˆ˜๋ฅผ ๋งํ•ด์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฑ์ค€์ด๊ฐ€ ๋™์ƒ์—๊ฒŒ 1, 5, 2, 10, -99, 7, 5๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์™ธ์ณค๋‹ค๊ณ  ํ•˜๋ฉด, ๋™์ƒ์€ 1, 1, 2, 2, 2, 2, 5๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๋งํ•ด์•ผ ํ•œ๋‹ค. ๋ฐฑ์ค€์ด๊ฐ€ ์™ธ์น˜๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋™์ƒ์ด ๋งํ•ด์•ผ ํ•˜๋Š” ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ 1

7
1
5
2
10
-99
7
5

์ถœ๋ ฅ 1

1
1
2
2
2
2
5

 

์ฝ”๋“œ

#include<iostream>
#include<queue>
#include<vector>

using namespace std;

//1655๋ฒˆ ๊ฐ€์šด๋ฐ๋ฅผ ๋งํ•ด์š”
//์ตœ์†Œํž™, ์ตœ๋Œ€ํž™ ์‚ฌ์šฉ
int main() {
    
    cin.tie(NULL);
    cout.tie(NULL);

    int N,temp;
    priority_queue<int> max;        //์ตœ๋Œ€ํž™       ์šฐ์„ ์ˆœ์œ„ ํ๋Š” default๋กœ less<in>๋ฅผ ์‚ฌ์šฉ
    priority_queue<int,vector<int>,greater<int>> min;       //์ตœ์†Œํž™
    cin >> N;
    for (int i = 0; i < N; i++) {
        cin >> temp;

        (max.size() == min.size()) ? max.push(temp) : min.push(temp);

        if (!max.empty() && !min.empty()&& max.top() > min.top()) {
            //์ค‘๊ฐ„ ๊ฐ’์˜ ์ˆœ์„œ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค๋ฉด ๊ฐ’ ๋ฐ”๊พธ๊ธฐ
            int maxVal, minVal;
            maxVal = max.top();
            minVal = min.top();
            max.pop();
            min.pop();
            max.push(minVal);
            min.push(maxVal);
        }

        cout << max.top()<<"\n";
    }
    
    return 0;
}

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

์—ฌ๋Ÿฌ๊ฐ€์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์—์„œ ๋ฌด์—‡์„ ์™œ ์“ฐ๋Š”์ง€๊ฐ€ ํ•ต์‹ฌ์ธ๋ฐ ์—ฌ๊ธฐ์„œ๋Š” ์ตœ์†Œํž™, ์ตœ๋Œ€ํž™์„ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ ์ด์œ ๋Š” ํž™์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ’ ์ค‘ ์ตœ๋Œ“๊ฐ’ ๋˜๋Š” ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„๋‚ด๋Š” ์—ฐ์‚ฐ์ด ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋น ๋ฅธ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํž™์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ์ด๋ฏ€๋กœ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.

์ตœ๋Œ€ ํž™์€ ๋ฃจํŠธ ๋…ธ๋“œ๋กœ ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก ์ €์žฅ๋œ ๊ฐ’์ด ์ปค์ง€๋Š” ๊ตฌ์กฐ์ด๋‹ค. 

์ตœ์†Œ ํž™์€ ๋ฃจํŠธ ๋…ธ๋“œ๋กœ ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก ๊ฐ’์ด ์ž‘์•„์ง€๋Š” ๊ตฌ์กฐ์ด๋‹ค.

 

์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ๋ฐฐ์—ด์„ ๋ฐ˜ํ‹ˆ์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ํ•œ์ชฝ์€ ์ตœ์†Œ ํž™, ํ•œ์ชฝ์€ ์ตœ๋Œ€ ํž™์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์—ฐ์‚ฐํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ด ๊ฒฝ์šฐ priority_queue๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. priority_queue๋Š” ํž™์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ณ  ์˜ต์…˜์„ ์ด์šฉํ•˜์—ฌ greater<int> ๋ฐ less<int>๋ฅผ ์ด์šฉํ•˜์—ฌ ์œ„์™€๊ฐ™์€ ์ตœ์†Œํž™, ์ตœ๋Œ€ํž™ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ํ†ตํ•ด์„œ ์ค‘๊ฐ„๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ์ด๋ผ ๋ฐ˜ํ‹ˆ์„ ๋‚˜๋ˆ„์–ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋Š” ์ตœ์†Œํž™, ์ตœ๋Œ€ํž™์„ ์ด์šฉํ•˜๋ฉด ๋น ๋ฅด๊ฒŒ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

  1. ๋จผ์ € ๋ฑ€์€ ๋ชธ๊ธธ์ด๋ฅผ ๋Š˜๋ ค ๋จธ๋ฆฌ๋ฅผ ๋‹ค์Œ์นธ์— ์œ„์น˜์‹œํ‚จ๋‹ค.
  2. ๋งŒ์•ฝ ์ด๋™ํ•œ ์นธ์— ์‚ฌ๊ณผ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ ์นธ์— ์žˆ๋˜ ์‚ฌ๊ณผ๊ฐ€ ์—†์–ด์ง€๊ณ  ๊ผฌ๋ฆฌ๋Š” ์›€์ง์ด์ง€ ์•Š๋Š”๋‹ค.
  3. ๋งŒ์•ฝ ์ด๋™ํ•œ ์นธ์— ์‚ฌ๊ณผ๊ฐ€ ์—†๋‹ค๋ฉด, ๋ชธ๊ธธ์ด๋ฅผ ์ค„์—ฌ์„œ ๊ผฌ๋ฆฌ๊ฐ€ ์œ„์น˜ํ•œ ์นธ์„ ๋น„์›Œ์ค€๋‹ค. ์ฆ‰, ๋ชธ๊ธธ์ด๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์‚ฌ๊ณผ์˜ ์œ„์น˜์™€ ๋ฑ€์˜ ์ด๋™๊ฒฝ๋กœ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ์ด ๊ฒŒ์ž„์ด ๋ช‡ ์ดˆ์— ๋๋‚˜๋Š”์ง€ ๊ณ„์‚ฐํ•˜๋ผ.

 

*์ฒ˜์Œ ๋ดค์„๋•Œ ํ„ด์— ๊ด€ํ•œ ๊ฐœ๋…์ด ์ž˜ ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜๋Š”๋ฐ ํ„ด์€ ๋ฌด์กฐ๊ฑด ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๋Š” ์‹œ์Šคํ…œ์ด๋‹ค.

 

 

์ž…๋ ฅ 1

6
3
3 4
2 5
5 3
3
3 D
15 L
17 D

์ถœ๋ ฅ 1

9

 

์ž…๋ ฅ 2

10
4
1 2
1 3
1 4
1 5
4
8 D
10 D
11 D
13 L

์ถœ๋ ฅ 2

21

 

์ž…๋ ฅ 3

10
5
1 5
1 3
1 2
1 6
1 7
4
8 D
10 D
11 D
13 L

์ถœ๋ ฅ 3

13

 

 

์ฝ”๋“œ

#include<iostream>
//#include<Windows.h>
#include<deque>
#include<vector>

using namespace std;

int main() {
    
    int N, K,L;     //N : ๋ณด๋“œ์˜ ํฌ๊ธฐ, K : ๋‹ค์Œ ์ค„์— ์‚ฌ๊ณผ์˜ ๊ฐœ์ˆ˜, L : ๋ฑ€์˜ ๋ฐฉํ–ฅ ๋ณ€ํ™˜ ํšŸ์ˆ˜
    int column, row;
    int currentX=0, currentY=0;
    int arrIdx = 0, turnIdx=0;          //arrIdx : ๋ฐฉํ–ฅ๋ฐฐ์—ด ์ธ๋ฑ์Šค, turnIdx : ๋ฐฉํ–ฅ ํšŒ์ „๋ฐฐ์—ด ์ธ๋ฑ์Šค
    int arrow[4][2] = { {1,0},              //์˜ค๋ฅธ์ชฝ
                        {0,1},              //์•„๋ž˜
                        {-1,0},             //์™ผ์ชฝ
                        {0,-1} };           //์œ„
    deque<vector<int>> body;

    cin >> N;

    //ํ•ด๋‹น ๋ฐฐ์—ด๋งŒํผ 2์ฐจ์› ํ–‰๋ ฌ ๋งŒ๋“ค๊ธฐ
    int** board = new int* [N];
    for (int i = 0; i < N; i++) {
        board[i] = new int[N];
    }
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            board[i][j] = 0;
        }
    }

    board[0][0] = 1;
    vector<int> point;
    point.push_back(0);
    point.push_back(0);
    body.push_back(point);

    cin >> K;
    for (int i = 0; i < K; i++) {
        cin >> row >> column;
        board[row-1][column-1] = 2;
    }
    cin >> L;
    int* turn = new int[L];
    int* direction = new int[L];
    int lValue;
    char rValue;

    for (int i = 0; i < L; i++) {
        cin >> lValue >> rValue;
        turn[i] = lValue;
        direction[i] = rValue;
    }

    int time = 0;

    while (time < 10000) {
    
        /* {
            Sleep(1000);
            system("cls");

            cout << "Time :" << time+1 << endl;
            //์ถœ๋ ฅํ•ด์„œ ํ™•์ธํ•˜๊ธฐ
            for (int i = 0; i < N; i++) {
                for (int j = 0; j < N; j++) {
                    cout << board[i][j] << " ";
                }
                printf("\n");
            }
        }*/
        
        if (time == turn[turnIdx] && time != 0) {
            if (direction[turnIdx] == 'D') {
                arrIdx++;
            }
            if (direction[turnIdx] == 'L') {
                arrIdx--;
            }
            turnIdx++;
        }


        if (arrIdx > 3)
            arrIdx = arrIdx % 4;
        if (arrIdx < 0) {
            arrIdx = 4 + arrIdx;
        }

        //์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ
        currentX += arrow[arrIdx][0];
        currentY += arrow[arrIdx][1];
       
        if ((currentX < 0 || currentX >= N) ||(currentY < 0 || currentY >= N))
            break;
        if (board[currentY][currentX] == 1)
            break;

        if (board[currentY][currentX] == 2) {
            //๋งŒ์•ฝ ์‚ฌ๊ณผ๊ฐ€ ์žˆ๋‹ค๋ฉด
            point.clear();
            point.push_back(currentY);
            point.push_back(currentX);
            body.push_front(point);

            for (size_t i = 0; i < body.size(); i++) {
                board[body[i][0]][body[i][1]] = 1;
            }
        }
        else {
            //๋งจ๋์˜ ๊ฐ’์˜ ์ž๋ฆฌ๋ฅผ 0์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ
            board[body.back()[0]][body.back()[1]] = 0;
            //์ฒ˜์Œ์˜ ๊ฐ’์„ ๋’ค๋กœ ๋ฐ€์–ด์ฃผ๊ธฐ

            for (size_t  i = body.size() - 1; i >0 ; i--) {
                int temp = body[i-1][0];
                body[i][0] = temp;
                temp = body[i-1][1];
                body[i][1] = temp;
            }

            //์ฒซ๋ฒˆ์งธ ๋จธ๋ฆฌ์›€์ง์ด๊ธฐ
            body[0][0]= currentY;
            body[0][1]= currentX;

            for (size_t i = 0; i < body.size(); i++) {
                board[body[i][0]][body[i][1]] = 1;
            }
        }

        time++;
    }

    cout << time + 1;

    //ํ• ๋‹น ํ•ด์ œ
    for (int i = 0; i < N; i++)
        delete[] board[i];

    return 0;
}

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

ํ„ด์— ๊ด€ํ•œ ๊ฐœ๋…์ด ์ฒ˜์Œ์— ์žกํžˆ์ง€ ์•Š์•„์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ค„ ์•Œ๊ณ  ์‹œ๊ฐ„์„ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ๋‹ค.

    Sleep(1000);
    system("cls");

    cout << "Time :" << time+1 << endl;
    //์ถœ๋ ฅํ•ด์„œ ํ™•์ธํ•˜๊ธฐ
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            cout << board[i][j] << " ";
        }
        printf("\n");
    }

์ด๋ถ€๋ถ„์˜ ์ฃผ์„์ฒ˜๋ฆฌ๋ฅผ ๋นผ๋ฉด ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์ œ์˜ 3๊ฐœ์˜ ์ถœ๋ ฅ ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

0์ด ๋นˆ์นธ์ด๊ณ  1์€ ๋ฑ€, 2๋Š” ์‚ฌ๊ณผ์ด๋‹ค.

 

์˜ˆ์ œ 1
์˜ˆ์ œ 2
์˜ˆ์ œ 3

์‚ฌ์‹ค ์—ฌ๊ธฐ๊นŒ์ง€ ์™€์„œ ์˜ˆ์ œ๋ฅผ ๋„ฃ์–ด๋ณด์•˜์„ ๋•Œ ์ œ์ถœ์„ ํ•˜๋‹ˆ๊นŒ ํ‹€๋ฆฐ๊ฒƒ์œผ๋กœ ๋‚˜์™”์—ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ํ•ด๋ณด์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ๋ฐ ๋ฐ˜๋ก€ ์ผ€์ด์Šค๋ฅผ ๋ชจ์•„๋†“์€ ์‚ฌ์ดํŠธ๋ฅผ ์ฐพ์•˜๋‹ค.

https://www.acmicpc.net/board/view/56469

 

๊ธ€ ์ฝ๊ธฐ - ๋ฑ€ ๋ฌธ์ œ ๋ฐ˜๋ก€๋ชจ์Œ์ž…๋‹ˆ๋‹ค

๋Œ“๊ธ€์„ ์ž‘์„ฑํ•˜๋ ค๋ฉด ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

www.acmicpc.net

๋‚˜์˜ ๊ฒฝ์šฐ ๋งจ ์ฒ˜์Œ ๋ฐ˜๋ก€ ์ผ€์ด์Šค์˜ 5๋ฒˆ์งธ๊นŒ์ง€ ํ†ต๊ณผ๋ฅผ ํ•˜๋‹ˆ ํ†ต๊ณผ๋ฅผ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๋‹ค๋ฅธ ๋ถ„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฐพ์•„๋ณด๋‹ˆ ์ด๋ถ„๊บผ๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด ์žˆ์—ˆ๋‹ค.

๋‚ด ์ฝ”๋“œ๋Š” for๋ฌธ์„ ๋งŽ์ด ์“ฐ๋Š”๋ฐ for๋ฌธ์„ ๋งŽ์ด ์“ฐ์ง€ ์•Š๋„๋ก ์ƒ๊ฐํ•˜๋Š” ํž˜์„ ์ข€ ๋” ๊ธธ๋Ÿฌ์•ผ๊ฒ ๋‹ค.

https://velog.io/@nacean/%EB%B0%B1%EC%A4%803190-%EB%B1%80-C-%ED%92%80%EC%9D%B4

 

๋ฐฑ์ค€[3190] ๋ฑ€ C++ ํ’€์ด

์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ๊ตฌํ˜„ํ•  ์ค„ ์•ˆ๋‹คํ๋ฅผ ์‚ฌ์šฉํ•  ์ค„ ์•ˆ๋‹ค๋ฑ€์˜ ๋ชธํ†ต์˜ ์ฒ˜์Œ๊ณผ ๋์„ ์ €์žฅํ•ด์ฃผ๊ธฐ ์œ„ํ•ด queue๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์‹œ๊ฐ„๋งˆ๋‹ค ๋ฐฐ์—ด์„ ์ฑ„ํฌํ•˜์—ฌ, D ํ˜น์€ L์ผ ๊ฒฝ์šฐ ๋ฐฉํ–ฅ ํšŒ์ „์„ ํ•œ๋‹คwhile๋ฌธ์„

velog.io

 

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

1์—์„œ๋ถ€ํ„ฐ 6๊นŒ์ง€์˜ ๋ˆˆ์„ ๊ฐ€์ง„ 3๊ฐœ์˜ ์ฃผ์‚ฌ์œ„๋ฅผ ๋˜์ ธ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์— ๋”ฐ๋ผ ์ƒ๊ธˆ์„ ๋ฐ›๋Š” ๊ฒŒ์ž„์ด ์žˆ๋‹ค.

  1. ๊ฐ™์€ ๋ˆˆ์ด 3๊ฐœ๊ฐ€ ๋‚˜์˜ค๋ฉด 10,000์›+(๊ฐ™์€ ๋ˆˆ)×1,000์›์˜ ์ƒ๊ธˆ์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค. 
  2. ๊ฐ™์€ ๋ˆˆ์ด 2๊ฐœ๋งŒ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ์—๋Š” 1,000์›+(๊ฐ™์€ ๋ˆˆ)×100์›์˜ ์ƒ๊ธˆ์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค. 
  3. ๋ชจ๋‘ ๋‹ค๋ฅธ ๋ˆˆ์ด ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ์—๋Š” (๊ทธ ์ค‘ ๊ฐ€์žฅ ํฐ ๋ˆˆ)×100์›์˜ ์ƒ๊ธˆ์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค.  

์˜ˆ๋ฅผ ๋“ค์–ด, 3๊ฐœ์˜ ๋ˆˆ 3, 3, 6์ด ์ฃผ์–ด์ง€๋ฉด ์ƒ๊ธˆ์€ 1,000+3×100์œผ๋กœ ๊ณ„์‚ฐ๋˜์–ด 1,300์›์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค. ๋˜ 3๊ฐœ์˜ ๋ˆˆ์ด 2, 2, 2๋กœ ์ฃผ์–ด์ง€๋ฉด 10,000+2×1,000 ์œผ๋กœ ๊ณ„์‚ฐ๋˜์–ด 12,000์›์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค. 3๊ฐœ์˜ ๋ˆˆ์ด 6, 2, 5๋กœ ์ฃผ์–ด์ง€๋ฉด ๊ทธ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด 6์ด๋ฏ€๋กœ 6×100์œผ๋กœ ๊ณ„์‚ฐ๋˜์–ด 600์›์„ ์ƒ๊ธˆ์œผ๋กœ ๋ฐ›๊ฒŒ ๋œ๋‹ค.

3๊ฐœ ์ฃผ์‚ฌ์œ„์˜ ๋‚˜์˜จ ๋ˆˆ์ด ์ฃผ์–ด์งˆ ๋•Œ, ์ƒ๊ธˆ์„ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑ ํ•˜์‹œ์˜ค.

 

 

์ž…๋ ฅ 1

3 3 6

์ถœ๋ ฅ 2

1300

 

์ž…๋ ฅ 2

2 2 2

์ถœ๋ ฅ 2

12000

 

์ž…๋ ฅ 3

6 2 5

์ถœ๋ ฅ 3

600

 

 

์ฝ”๋“œ

#include<iostream>

using namespace std;

bool equals(int rValue,int lValue, int* outValue) {
    if (rValue == lValue) {
        *outValue = rValue;
        return true;
    }
    else
        return false;
}

int main() {
    
    int firstDice, secondDice, thirdDice;
    int value=0;
    cin >> firstDice >> secondDice >> thirdDice;
    
    if (firstDice == secondDice&& secondDice == thirdDice) {     //๋งŒ์•ฝ ์„ธ๊ฐœ๊ฐ€ ๊ฐ™์€ ๊ฐ’์ด๋ฉด
        cout << 10000 + firstDice * 1000;
    }
    else if (equals(firstDice,secondDice,&value)
        || equals(secondDice, thirdDice, &value)
        || equals(firstDice, thirdDice, &value)) {     //๋งŒ์•ฝ ๋‘๊ฐœ๊ฐ€ ๊ฐ™์€ ๊ฐ’์ด๋ฉด
        cout<<1000+ value *100;
    }
    else {
        //๊ทธ ์ค‘ ๊ฐ€์žฅ ํฐ๋ˆˆ
        value = max(max(firstDice, secondDice), thirdDice);
        cout << value * 100;
    }

    return 0;
}

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

๋‹จ๊ณ„๋ณ„๋กœ ํ’€์–ด๋ณด๊ธฐ์—์„œ if๋ฌธ ์ฃผ์ œ๋กœ ์ถ”๊ฐ€ ๋ถ„๋ฅ˜๋œ ๋ฌธ์ œ์—ฌ์„œ ํ’€์–ด๋ณด์•˜๋‹ค.

๋ง๊ทธ๋Œ€๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ if-else if-else๋ฌธ์„ ํ†ตํ•˜์—ฌ ์ด 3๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•˜๋ฉด ๋œ๋‹ค.

 if (firstDice == secondDice&& secondDice == thirdDice)

์ด๋ถ€๋ถ„์€ ์ฒซ๋ฒˆ์งธ ์ฃผ์‚ฌ์œ„์™€ ๋‘๋ฒˆ์งธ ์ฃผ์‚ฌ์œ„์˜ ์ˆซ์ž๊ฐ€ ๊ฐ™๊ณ  ๋‘๋ฒˆ์งธ ์ฃผ์‚ฌ์œ„์™€ ์„ธ๋ฒˆ์งธ ์ฃผ์‚ฌ์œ„์˜ ์ˆซ์ž๊ฐ€ ๊ฐ™์„๋•Œ, 'A์™€ B๊ฐ€ ๊ฐ™๊ณ  B์™€ C๊ฐ€ ๊ฐ™์œผ๋ฉด A์™€ C๋Š” ๊ฐ™๋‹ค'๋ผ๋Š” ๊ณต๋ฆฌ๋ฅผ ํ†ตํ•ด ๋‘๊ฐ€์ง€์˜ ์›๋ฆฌ๊ฐ€ true๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์„ธ ๊ฐ€์ง€์˜ ๊ฐ’์ด ๋ชจ๋‘ ๊ฐ™์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

bool equals(int rValue,int lValue, int* outValue) {
    if (rValue == lValue) {
        *outValue = rValue;
        return true;
    }
    else
        return false;
}

equals()ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ else if๋ฌธ ์•ˆ์—์„œ ๋งŒ์•ฝ ๋‘๊ฐœ๊ฐ€ ๊ฐ™์€ ๊ฐ’์ด๋ฉด value์— ๊ทธ ๊ฐ’์„ ์ง‘์–ด๋„ฃ์–ด์„œ ์ถœ๋ ฅํ• ๋•Œ ์“ธ์ˆ˜ ์žˆ๊ฒŒ๋” ์ œ์ž‘ํ•˜์˜€๋‹ค. ๊ทธ์ค‘ outValue๋งŒ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” rValue์™€ lValue์˜ ๊ฒฝ์šฐ ์–•์€ ๋ณต์‚ฌ๋ฅผ ํ†ตํ•ด ์ˆซ์ž๊ฐ’๋งŒ ๋“ค๊ณ ์™€์„œ ๋น„๊ตํ•˜๋ฉด ๋˜์ง€๋งŒ outValue์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผํ•˜๊ธฐ๋•Œ๋ฌธ์— ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ํ•„์š”ํ•ด์„œ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

else {
        //๊ทธ ์ค‘ ๊ฐ€์žฅ ํฐ๋ˆˆ
        value = max(max(firstDice, secondDice), thirdDice);
        cout << value * 100;
    }

๋งˆ์ง€๋ง‰์œผ๋กœ ์„ธ๊ฐœ์˜ ๊ฐ’์ด ๋ชจ๋‘ ๋‹ค๋ฅธ ๊ฒฝ์šฐ max()ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋จผ์ € ์ฒซ๋ฒˆ์งธ ์ˆ˜์™€ ๋‘๋ฒˆ์งธ ์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ๋น„๊ตํ•œ ํฐ ๊ฐ’๊ณผ ์„ธ๋ฒˆ์งธ ์ˆ˜์˜ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ์ œ์ผ ํฐ ์ˆ˜๋ฅผ value์— ๋„ฃ์–ด์„œ ์ถœ๋ ฅํ•˜๋„๋ก ํ•˜์˜€๋‹ค.

 

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 1,000), ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ M(1 ≤ M ≤ 10,000), ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•  ์ •์ ์˜ ๋ฒˆํ˜ธ V๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ M๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ„์„ ์ด ์—ฐ๊ฒฐํ•˜๋Š” ๋‘ ์ •์ ์˜ ๋ฒˆํ˜ธ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์–ด๋–ค ๋‘ ์ •์  ์‚ฌ์ด์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ„์„ ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๊ฐ„์„ ์€ ์–‘๋ฐฉํ–ฅ์ด๋‹ค.

 

 

์ž…๋ ฅ

4 5 1
1 2
1 3
1 4
2 4
3 4

์ถœ๋ ฅ

1 2 4 3
1 2 3 4

 

์ฝ”๋“œ

#include<iostream>
#include<vector>
#include<queue>
#include<string>
#include<algorithm>
using namespace std;

// 1260๋ฒˆ DFS์™€ BFS

//๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰
void dfs(vector<int> inputGraph[], bool *visited,int index) {
	visited[index] = true;		//๋ฐฉ๋ฌธํ–ˆ์Œ์„ ํ‘œ์‹œ
	cout << index<<" ";
	//dfs ํƒ์ƒ‰ ์ˆœ์„œ
	int grphSize = inputGraph[index].size();
	for (int i = 0; i < grphSize; i++) {
		int connectIdx = inputGraph[index][i];
		if (!visited[connectIdx])
			dfs(inputGraph, visited, connectIdx);
	}
}

//๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰
void bfs(vector<int> inputGraph[],bool *visited,int index) {
	queue<int> que;
	que.push(index);
	visited[index] = true;
	//bfs ํƒ์ƒ‰ ์ˆœ์„œ
	while (!que.empty()) {
		int visitIdx = que.front();
		que.pop();
		cout << visitIdx<<" ";
		int grphSize = inputGraph[visitIdx].size();
		for (int i = 0; i < grphSize; i++) {
			//๋ฐฉ๋ฌธํ•œ Idx์™€ ์—ฐ๊ฒฐ๋œ ์›์†Œ๋“ค์„ que์— ๋„ฃ๊ธฐ
			int connectIdx = inputGraph[visitIdx][i];
			if (!visited[connectIdx]) {		//๋งŒ์•ฝ ์—ฐ๊ฒฐ๋œ ์›์†Œ๋ฅผ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด
				que.push(connectIdx);		//๋ฐฉ๋ฌธํ•  ๋…ธ๋“œ๋กœ ์„ ์ •
				visited[connectIdx] = true;
			}
		}
	}
	
	
}

int main() {

	int N, M, V;		//์ •์ ์˜ ๊ฐœ์ˆ˜, ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜, ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•  ์ •์ ์˜ ๋ฒˆํ˜ธ

	cin >> N >> M >> V;

	int size = N + 1;
	//N๊ฐœ๋งŒํผ์˜ ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ
	bool* visited = new bool[size] {false, };			//๋ฐฉ๋ฌธ ์œ ๋ฌด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด
	vector<int>* graph = new vector<int>[size];
	graph->push_back(1);

	for (int i = 0; i < M; i++) {
		int origin, connect;
		cin >> origin >> connect;
		graph[origin].push_back(connect);
		graph[connect].push_back(origin);
	}

	//์ •๋ ฌ
	for (int i = 0; i < size; i++) {
		sort(graph[i].begin(),graph[i].end());
	}

	dfs(graph,visited, V);
	cout << endl;
	visited = new bool[size]{ false, };		//๋ฐฉ๋ฌธ์œ ๋ฌด๋ฅผ ๋‹ค์‹œ ์ดˆ๊ธฐํ™”ํ•ด์คŒ(์žฌ์‚ฌ์šฉ ์œ„ํ•ด)
	bfs(graph, visited,V);

	delete [] visited;		//๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ 
	//vector ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ
	graph->clear();
	vector<int>().swap(*graph);

	return 0;
}

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

DFS์™€ BFS๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. DFS๋Š” ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋„๋ก ์ž‘์„ฑํ•˜์˜€๊ณ , BFS๋Š” ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด์„œ ํ•ด๋‹น ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ ์ค‘ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋งŒ ๋‹ค์‹œ ํƒ์ƒ‰ํ•ด์„œ ํƒ์ƒ‰์ด ๋๋‚˜๋ฉด ์ข…๋ฃŒ๋˜๋„๋ก ์ž‘์„ฑํ•˜์˜€๋‹ค. DFS์™€ BFS์˜ ๊ฒฝ์šฐ 

https://better-tomorrow.tistory.com/entry/DFS-BFS-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

DFS & BFS ์ดํ•ดํ•˜๊ธฐ ๋ฐ ๊ตฌํ˜„(C++)

DFS : Depth First Search(๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰) - ๊ทธ๋ž˜ํ”„ ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜. (์™„๋ฒฝํžˆ ํƒ์ƒ‰) - ์‹œ์ž‘์ ๋ถ€ํ„ฐ ๋‹ค์Œ branch๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— ํ•ด๋‹น branch๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํƒ์ƒ‰ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋Š” ๋ฐฉ๋ฒ•. - [์žฌ๊ท€ํ•จ์ˆ˜]

better-tomorrow.tistory.com

ํ•ด๋‹น ํฌ์ŠคํŒ…์„ ํ†ตํ•ด ์ž์„ธํ•˜๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค. DFS์™€ BFS์— ๋Œ€ํ•ด ์•Œ๊ณ ์‹ถ์œผ๋ฉด ์œ„์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ์ข‹์„๋“ฏํ•˜๋‹ค.

for (int i = 0; i < M; i++) {
    int origin, connect;
    cin >> origin >> connect;
    graph[origin].push_back(connect);
    graph[connect].push_back(origin);
}

์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค์„ ์ž…๋ ฅ๋ฐ›๋Š” ๊ณผ์ •์—์„œ ์—ฐ๊ฒฐ๋œ 2๊ฐœ๋ฅผ ์ž…๋ ฅ ๋ฐ›์„์‹œ ์„œ๋กœ ๊ฐ์ž์˜ ๋…ธ๋“œ์— ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์ž…๋ ฅ์‹œํ‚ค๋„๋ก ํ•œ๋‹ค.

//์ •๋ ฌ
for (int i = 0; i < size; i++) {
    sort(graph[i].begin(),graph[i].end());
}

์ž…๋ ฅ์‹œํ‚จ ์ •๋ณด๋“ค์„ sort๋ฅผ ํ†ตํ•ด ์ •๋ ฌ์„ ์‹œ์ผœ์ค€๋‹ค. ์ •๋ ฌ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ์›ํ•˜๋Š”๋Œ€๋กœ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ์„ ๊ผญ ํ•ด์ค€๋‹ค.

 

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

์ •์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ํ๋ฅผ ๊ตฌํ˜„ํ•œ ๋‹ค์Œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๋ช…๋ น์€ ์ด ์—ฌ์„ฏ ๊ฐ€์ง€์ด๋‹ค.

  • push X: ์ •์ˆ˜ X๋ฅผ ํ์— ๋„ฃ๋Š” ์—ฐ์‚ฐ์ด๋‹ค.
  • pop: ํ์—์„œ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ๋นผ๊ณ , ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ํ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • size: ํ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • empty: ํ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด 1, ์•„๋‹ˆ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • front: ํ์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ํ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • back: ํ์˜ ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ํ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ž…๋ ฅ

15
push 1
push 2
front
back
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
front

์ถœ๋ ฅ

1
2
2
0
1
2
-1
0
1
-1
0
3

 

์ฝ”๋“œ

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

// 10845๋ฒˆ ํ

//ํ ๊ตฌํ˜„
class QueueS {
public:
	int front;
	int back;
	int size;
	int *values;		//๋ชจ๋“  ๊ฐ’๋“ค์„ ๋‹ด์€ ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ

	//์ƒ์„ฑ์ž
	QueueS() {
		size = 10001;		//ํ์˜ ์‚ฌ์ด์ฆˆ 
		values = new int[size];
		front = 0;
		back=0;
	}
	//์†Œ๋ฉธ์ž
	~QueueS() {
		delete[] values;
	}

	void push(int data) {
		if ((back+1)%size!=front) {
			values[back] = data;
			back = (back + 1) % size;
		}
	}

	void pop() {
		front = (front + 1) % size;
	}

	bool empty() {
		if (back == front)
			return true;
		else
			return false;
	}
};

QueueS st;

void getNumSize(string str) {
	int temp;

	if (str == "back") {
		if (st.back - st.front != 0) {
			cout << st.values[st.back - 1] << "\n";
		}
		else cout << "-1\n";
	}
	else if (str == "front") {
		if (st.back - st.front != 0) {
			cout << st.values[st.front] << "\n";
		}
		else cout << "-1\n";
	}
	else if (str == "size") {
		cout << st.back-st.front << "\n";
	}
	else if (str == "empty") {
		cout << ((st.back - st.front==0)?true:false) << "\n";
	}
	else if (str == "pop") {
		if (st.back - st.front!=0) {
			cout << st.values[st.front] << "\n";
			st.pop();
		}
		else {
			cout << "-1\n";
		}
	}
	else if (str == "push")
	{
		cin >> temp;
		st.push(temp);
	}
}

int main() {

	int n;
	string str;
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> str;
		getNumSize(str);
	}

	return 0;
}

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

ํ๋ฅผ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ํ ํด๋ž˜์Šค์˜ front,back์€ ์ผ์ข…์˜ ๋งจ ์•ž์˜ index ๋ฒˆํ˜ธ๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์ด๊ณ , back์€ ๋งจ ๋’ค์˜ index๋ฒˆํ˜ธ๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  int* values๋ฅผ ํ†ตํ•ด์„œ ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’๋“ค์„ back์„ ๋Š˜๋ ค๊ฐ€๋ฉด์„œ ์ €์žฅํ•˜์˜€๋‹ค.

 

 

C ๊ตฌ์กฐ์ฒด์™€ C++์˜ queue ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์‹  ๋ถ„๋„ ์žˆ์—ˆ๋‹ค.

https://blockdmask.tistory.com/119

 

[๋ฐฑ์ค€ 10845] ํ (C, C++ Queue)

์•ˆ๋…•ํ•˜์„ธ์š”.BlockDMask ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์˜๊ตญ์— ์˜จ์ง€ ์ดํ‹€์งธ ๋˜๋Š”๋‚ ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์›ํ•˜๋Š” ๋ฐ๋กœ ์ €๋Š” ์˜๊ตญ ๋Ÿฐ๋˜ ๋ฆฌ์  ํŠธ ๊ณต์› ๋ฒค์น˜์— ์•‰์•„์„œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ์ง‘์ค‘์ด ์•ˆ๋˜์„œ; ์‰ฌ์šด ์ž

blockdmask.tistory.com

๋‚ด ์ฝ”๋“œ๋Š” ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ์–ด์„œ.. ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ฐธ๊ณ ํ•˜๋‹ค ๋ณด๋‹ˆ ์•„๋ฌด๋ž˜๋„ cout๋ฌธ์ œ๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ printf๋กœ ํ•œ๋ฒˆ ๋‹ค ๋ฐ”๊ฟ”๋ณด์•˜๋‹ค.

 

๊ทธ๋ ‡๊ฒŒ๊นŒ์ง€ ์˜ํ–ฅ์„ ์ค€๊ฑด ์•„๋‹Œ๊ฐ€๋ณด๋‹ค ์‹ถ์–ด์„œ ์ข€ ๋” ์ฐพ์•„๋ณด๋‹ˆ

https://coding-insider.tistory.com/entry/cin-cout-%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%86%8D%EB%8F%84-%EB%B9%A0%EB%A5%B4%EA%B2%8C%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

cin, cout ์ž…์ถœ๋ ฅ ์†๋„ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

scanf์™€ cin์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์†๋„๋ฉด์—์„œ ํฐ ์ฐจ์ด๊ฐ€ ๋‚œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. 1 2 3 ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cs + endl ๋ณด๋‹ค..

coding-insider.tistory.com

cin์˜ ์†๋„๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ์—„์ฒญ ๋Š๋ฆฌ๋‹ค๋Š”๊ฒƒ! 

ios_base :: sync_with_stdio(false); 
cin.tie(NULL); 
cout.tie(NULL);

์ด ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋นจ๋ผ์ง„๋‹ค๊ณ ๋Š” ํ•˜๋‚˜ scanf,printf์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๊ณ  ์‹ฑ๊ธ€์“ฐ๋ ˆ๋“œ ์˜์—ญ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์„œ ์‹ค์ œ ์ฝ”๋“œ ์˜์—ญ์—์„œ๋Š” ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ง€์–‘ํ•˜๋ผ๊ณ  ํ•œ๋‹ค.

์ผ๋‹จ ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ ์˜์—ญ์ด๋‹ˆ ์Ÿค๋“ค์„ ์ถ”๊ฐ€ํ•ด์„œ ํ•œ๋ฒˆ ๋Œ๋ ค๋ณด์•˜๋‹ค.

 

์†๋„๋Š” ๋นจ๋ผ์กŒ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋Š˜์–ด๋‚ฌ๋‹ค.. ๊ทธ๋Ÿฌ๋ฉด scanf,printf๋กœ ๋‹ค ๋ฐ”๊ฟ”๋ณด๊ฒ ๋‹ค.

 

๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋„ ์ค„์–ด๋“ค์—ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ scanf,printf๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์•ž์œผ๋กœ๋„ ์จ์•ผ๊ฒ ๋‹ค.

 

์ฝ”๋“œ(scanf,printf)

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

// 10845๋ฒˆ ํ
//ํ ๊ตฌํ˜„
class QueueS {
public:
	int front;
	int back;
	int size;
	int *values;		//๋ชจ๋“  ๊ฐ’๋“ค์„ ๋‹ด์€ ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ

	//์ƒ์„ฑ์ž
	QueueS() {
		size = 10001;		//ํ์˜ ์‚ฌ์ด์ฆˆ 
		values = new int[size];
		front = 0;
		back = 0;
	}
	//์†Œ๋ฉธ์ž
	~QueueS() {
		delete[] values;
	}

	void push(int data) {
		if ((back + 1) % size != front) {
			values[back] = data;
			back = (back + 1) % size;
		}
	}

	void pop() {
		front = (front + 1) % size;
	}

	bool empty() {
		if (back == front)
			return true;
		else
			return false;
	}
};

QueueS st;

void getNumSize(char str[]) {
	int temp;

	if (!strcmp(str, "back")) {
		if (st.back - st.front != 0) {
			printf("%d\n", st.values[st.back - 1]);
		}
		else printf("-1\n");
	}
	else if (!strcmp(str,"front")) {
		if (st.back - st.front != 0) {
			printf("%d\n", st.values[st.front]);
		}
		else printf("-1\n");
	}
	else if (!strcmp(str ,"size")) {
		printf("%d\n", st.back - st.front);
	}
	else if (!strcmp(str,"empty")) {
		printf("%d\n", ((st.back - st.front == 0) ? true : false));
	}
	else if (!strcmp(str, "pop")) {
		if (st.back - st.front != 0) {
			printf("%d\n", st.values[st.front]);
			st.pop();
		}
		else {
			printf("-1\n");
		}
	}
	else if (!strcmp(str,"push"))
	{
		scanf("%d", &temp);
		st.push(temp);
	}
}

int main() {

	int n;
	char str[6];
	scanf("%d", &n);
	for (int i = 0; i < n; i++) {
		scanf("%s", str);
		getNumSize(str);
	}

	return 0;
}

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

์•ŒํŒŒ๋ฒณ ๋Œ€์†Œ๋ฌธ์ž๋กœ ๋œ ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ์ด ๋‹จ์–ด์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ ์•ŒํŒŒ๋ฒณ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋‚ด๋Š ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋Œ€,์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ X

 

์˜ˆ์ œ ์ž…์ถœ๋ ฅ

์ž…๋ ฅ

Mississipi

์ถœ๋ ฅ

?

 

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
using namespace std;
 
int main() {
   char word[1000001]={" ",};
   char mostAlpha[26]={" ",};   //์•ŒํŒŒ๋ฒณ ๊ฐฏ์ˆ˜๊ฐ€ 26๊ฐœ์ด๋ฏ€๋กœ
   int repetNum[26]={0,};      //๋Œ€๋ฌธ์ž ์†Œ๋ฌธ์ž ํ•ฉํ•˜๋ฉด 52
   int idx=0,alphaCount=0;
   bool isIncrease=false;
   scanf("%s",word);
   while(word[idx]!='\0'){
           int idxSame=0;
           if(word[idx]>=97) word[idx]-=32;        //์†Œ๋ฌธ์ž์ผ ๊ฒฝ์šฐ ์•„์Šคํ‚ค์ฝ”๋“œ 32๋ฅผ ๋นผ์ฃผ์–ด ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
        if(alphaCount>=1){
             for(int i=0;i<alphaCount;i++){
                //๊ฐ™์€ ๊ฒƒ ์žˆ๋Š”์ง€ ์ฒดํฌ ๋ฐ ๊ฐ™์€ ์ž๋ฆฌ์˜ ๋ฐฐ์—ด ๋ฒˆํ˜ธ ์ €์žฅ
                if(word[idx]==mostAlpha[i]){
                  isIncrease=false;
                  idxSame=i;
                  break;
                }
                else{
                   isIncrease=true;
                }
             }
             if(isIncrease){        //for๋ฌธ์ด ๋๋‚˜๊ณ  alphaCount๋ฅผ ๋”ํ•ด์ฃผ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ
                mostAlpha[alphaCount]=word[idx];
                repetNum[alphaCount]=1;
                 alphaCount++;        //๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋” ๋งŽ์€ for๋ฌธ์„ ๋ฐœ์ƒ์‹œํ‚ด
             }
             else
             {
                  repetNum[idxSame]++;    //์•„๋‹ˆ๋ฉด์€ ๊ฐ™์€๊ฒƒ์— ++ํ•ด์คŒ
             }
        }
        else
        {
             mostAlpha[0]=word[idx];
             repetNum[0]=1;
             alphaCount++;
        }
        idx++;
   }
   //์ œ์ผ ์ˆซ์ž๊ฐ€ ํฐ ๊ฒƒ์„ ๋ฝ‘์Œ
   int mostNum=0,mostNumIdx=0;
   bool isDupli=false;
   for(int i=0;i<alphaCount;i++){
      if(mostNum<repetNum[i]){ 
         mostNum=repetNum[i];
         isDupli=false;            //์ตœ๋Œ“๊ฐ’์ด ๋ฐ”๋€”๊ฒฝ์šฐ false
         mostNumIdx=i;
      }
      else if(mostNum==repetNum[i]&&repetNum[i]>1){
         isDupli=true;            //๊ฐ™์€ ์ตœ๋Œ€๊ฐ’์ด ์žˆ๋‹ค๋ฉด true, ํ•˜์ง€๋งŒ 1์ดˆ๊ณผ์—ฌ์•ผํ•จ
      }
   }
   
   if(isDupli){
      printf("?");
   }
   else{
          printf("%c",mostAlpha[mostNumIdx]);
   }
   return 0;
}
cs

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

์•ŒํŒŒ๋ฒณ๊ฐฏ์ˆ˜๋งŒํผ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ๋ฌธ์ž์—ด์„ ์ฒดํฌํ•˜์—ฌ ๊ฐฏ์ˆ˜๋งŒํผ ์ €์žฅํ•œ ํ›„ 45~56๋ฒˆ ๋ผ์ธ์—์„œ ์ œ์ผ ํฐ ์•ŒํŒŒ๋ฒณ์„ ๋ฝ‘๋Š”๋‹ค

๋‚˜๋จธ์ง€๋Š” ์ฃผ์„์„ ํ†ตํ•ด ์„ค๋ช…ํ•ด๋†“์•˜๋‹ค

์ด ์ฝ”๋“œ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€ ์•Š์„๊นŒ ์‹ถ๊ธดํ•˜๋‹ค

 

*๋ฉ”๋ชจ๋ฆฌ*

2840KB

*์‹œ๊ฐ„*

36ms

*์–ธ์–ด*

C++14

*์ฝ”๋“œ๊ธธ์ด*

1878B

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

 

 

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

๋ฌธ์ž์—ด S๋ฅผ ์ž…๋ ฅ๋ฐ›์€ ํ›„, ๊ฐ ๋ฌธ์ž๋ฅผ R๋ฒˆ ๋ฐ˜๋ณตํ•ด ์ƒˆ ๋ฌธ์ž์—ด P๋ฅผ ๋งŒ๋“  ํ›„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ฆ‰, ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ R๋ฒˆ ๋ฐ˜๋ณตํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ R๋ฒˆ ๋ฐ˜๋ณตํ•˜๋Š” ์‹์œผ๋กœ P๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค. S์—๋Š” QR Code "alphanumeric" ๋ฌธ์ž๋งŒ ๋“ค์–ด์žˆ๋‹ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T(1≤ T ≤ 1000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๋ฐ˜๋ณต ํšŸ์ˆ˜ R(1 ≤ R ≤ 8), ๋ฌธ์ž์—ด S๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค. S์˜ ๊ธธ์ด๋Š” ์ ์–ด๋„ 1์ด๋ฉฐ, 20๊ธ€์ž๋ฅผ ๋„˜์ง€ ์•Š๋Š”๋‹ค. 

 

์˜ˆ์ œ ์ž…์ถœ๋ ฅ

์ž…๋ ฅ

2
3 ABC
5 /HTP

์ถœ๋ ฅ

AAABBBCCC
/////HHHHHTTTTTPPPPP

 

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
int main() {
    int arrayNum,repetition;
    scanf("%d",&arrayNum);
    char array[20]={" ",};    //๊ณต๋ฐฑ์œผ๋กœ ์ดˆ๊ธฐํ™”
    char *arrayPtr = array;
    char repetArray[160]={" ",};    //์ตœ๋Œ€ 8๋ฒˆ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— 20X8
    for(int i=0;i<arrayNum;i++){
        int idx=0,count=0;
        scanf("%d %s",&repetition,arrayPtr);
        while(array[idx]!='\0'){
            for(int j=count;j<count+repetition;j++){
                repetArray[j]=array[idx];
                printf("%c",repetArray[j]);
            }
            count+= idx*repetition;
            idx++;
        }
        printf("\n");
    }
    
    return 0;
}
cs

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

์ผ๋‹จ ํ’€์ดํ•˜๊ธฐ์— ์•ž์„œ ์‚ฌ์‹ค ์ด ๋ฌธ์ œ์˜ ๋‚ด๊ฐ€ ์“ด ๋‹ต์€ ํ‹€๋ ธ๋‹ค

ํ•˜์ง€๋งŒ ๋ฐฑ์ค€์—์„œ๋Š” ํ†ต๊ณผ๊ฐ€ ๋œ๋‹ค

๋ฌธ์ œ์—์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ 1~1000๊ฐœ์ด๊ณ , ์ผ€์ด์Šค ๋ฐ˜๋ณต ํšŸ์ˆ˜๋Š” 1~8, ๋ฌธ์ž์—ด์€ 20๊ธ€์ž๋ฅผ ๋„˜์ง€ ์•Š๋Š”๋‹ค ์˜€๊ธฐ ๋•Œ๋ฌธ์— repetArray ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์‚ฌ์‹ค์€ 20X8X1000๊ฐœ๋Š” ์žˆ์–ด์•ผ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

codeForce์—์„œ ํ’€์—ˆ๋‹ค๋ฉด ์•„๋งˆ ๋ฐ”๋กœ ํ‹€๋ ธ์„๋“ฏ

11๋ฒˆ ๋ผ์ธ : ์ด ๋ผ์ธ์—์„œ ๋ฐ˜๋ณต ํšŸ์ˆ˜, ๋ฌธ์ž์—ด์„ ๋ฐ›๊ณ  %s๋Š” ํฌ์ธํ„ฐ๋ฅผ ๋„ฃ์–ด์ค˜์•ผํ•จ

12๋ฒˆ ๋ผ์ธ : ๋งŒ์•ฝ ๊ทธ ๋‹ค์Œ ๋ฐฐ์—ด์ด null์ผ ๊ฒฝ์šฐ ์ถœ๋ ฅ์„ ์ •์ง€ํ•จ

 

*๋ฉ”๋ชจ๋ฆฌ*

2016KB

*์‹œ๊ฐ„*

0ms

*์–ธ์–ด*

C++17

*์ฝ”๋“œ๊ธธ์ด*

535B

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด S๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ์•ŒํŒŒ๋ฒณ์— ๋Œ€ํ•ด์„œ, ๋‹จ์–ด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜๋ฅผ, ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ๋ฒˆ์žฌ ์ค„์— ๋‹จ์–ด S๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” 100์„ ๋„˜์ง€ ์•Š์œผ๋ฉฐ, ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

์˜ˆ์ œ ์ž…์ถœ๋ ฅ

์ž…๋ ฅ : baekjoon

์ถœ๋ ฅ : 1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

 

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
int main() {
    int array[26]={0,};    
    for(int i=0;i<26;i++){
        array[i]=-1;        //๋ชจ๋“  ๋ฐฐ์—ด -1๋กœ ์ดˆ๊ธฐํ™”
    }
    char word[100]={"",};
    for(int i=0;i<100;i++){
        scanf("%c",&word[i]);
        if(word[i]=='\0'break;        //์ž…๋ ฅ ๊ฐ’์ด ์—†์„ ๋•Œ for๋ฌธ์„ ๋น ์ ธ๋‚˜์˜ด
        else if(array[static_cast<int>(word[i])-97]==-1)
            array[static_cast<int>(word[i])-97]=i;
    }
    for(int i=0;i<26;i++){
        printf("%d ",array[i]);
    }
    return 0;
}
cs

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

4~7๋ฒˆ ๋ผ์ธ : array๋ฐฐ์—ด(์ถœ๋ ฅ ๋ฐฐ์—ด)์„ -1๋กœ ๋จผ์ € ์ดˆ๊ธฐํ™” ํ•ด์คŒ

9~11๋ฒˆ ๋ผ์ธ : for๋ฌธ์„ 100๋ฒˆ ๋Œ๋ฆฌ๋Š”๋ฐ ๋งŒ์•ฝ ์ž…๋ ฅ๋œ ๊ฐ’์ด ์—†๋‹ค๋ฉด for๋ฌธ์„ ๋น ์ ธ๋‚˜์˜ค๋„๋ก break๋ฅผ ์ ์šฉํ•จ

12~13๋ฒˆ ๋ผ์ธ : ๋งŒ์•ฝ ์ž…๋ ฅ๋œ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ’์„ static_cast๋ฅผ ์ด์šฉํ•˜์—ฌ int ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ๊ณ  ํ•ด๋‹น๋˜๋Š” array์ž๋ฆฌ๊ฐ€ -1์ƒํƒœ(์ฆ‰, ๋จผ์ € ํ™•์ธ๋˜์ง€ ์•Š์€ ์ƒํƒœ)๋ผ๋ฉด ํ•ด๋‹น ๋ฐฐ์—ด์˜ ์ž๋ฆฌ์— i(๋ช‡๋ฒˆ์งธ ์ˆ˜์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” idx)๋ฅผ ์‚ฝ์ž…ํ•ด์คŒ

 

P.S

if(word[i]==NULL)๋กœ ์“ฐ๋‹ˆ๊นŒ warning ๋ฌธ๊ตฌ๊ฐ€ ๋–ณ๋‹ค. ์•„๋งˆ ์ปดํŒŒ์ผ๋Ÿฌ์— ๋”ฐ๋ผ์„œ NULL์ด๋ผ๋Š” ์˜ˆ์•ฝ์–ด๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— '\0' ์œผ๋กœ ์ˆ˜์ •ํ•˜์˜€๋‹ค.

 

*๋ฉ”๋ชจ๋ฆฌ*

2016KB

*์‹œ๊ฐ„*

0ms

*์–ธ์–ด*

C++17

*์ฝ”๋“œ๊ธธ์ด*

442B

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

N๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ๊ณต๋ฐฑ ์—†์ด ์“ฐ์—ฌ์žˆ๋‹ค. ์ด ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ํ•ฉํ•ด์„œ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ˆซ์ž์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์— ์ˆซ์ž N๊ฐœ๊ฐ€ ๊ณต๋ฐฑ์—†์ด ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆซ์ž N๊ฐœ์˜ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int main() {
    int numberSize,sum=0;
    scanf("%d\n",&numberSize);
    char array[numberSize]={"",};        //int๋กœ ๋ฐ›์„ ์‹œ ๊ณต๋ฐฑ์—†์ด ๋ฐ›์„ ์ˆ˜ ์—†์–ด์„œ char๋ฐฐ์—ด๋กœ ์ง„ํ–‰
    for(int i=0;i<numberSize;i++){    
        scanf("%c",&array[i]);
        //char๋ฅผ int๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 0์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์ธ 48์„ ๋นผ์ค˜์•ผํ•จ
        sum+=static_cast<int>(array[i])-48;    
    }
    printf("%d",sum);
    return 0;
}
 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

int๋กœ ๋ฐ›์„ ์‹œ ๊ณต๋ฐฑ์—†์ด ๋ฐ›์„ ์ˆ˜ ์—†์–ด์„œ char ๋ฐฐ์—ด๋กœ ๋ฐ›์•˜๋‹ค

for๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋ฐฐ์—ด์„ ํ•œ๊ฐœ์”ฉ ๋ฐ›์•„์˜จ๋‹ค

๋ฐ›์•„์˜จ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค

10๋ฒˆ์งธ ์ค„์—์„œ sum์€ ํ•œ๊ฐœ์”ฉ ๋ฐ›์•„์˜จ char๋ฅผ static_cast<int>๋ฅผ ํ†ตํ•ด์„œ int๋กœ ๋ฐ”๊พธ๊ณ  0์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์ธ 48์„ ๋นผ์ค€ ๊ฐ’์„ ๋”ํ•ด์ค€๋‹ค

 

*๋ฉ”๋ชจ๋ฆฌ*

1984KB

*์‹œ๊ฐ„*

0ms

*์–ธ์–ด*

C++14

*์ฝ”๋“œ๊ธธ์ด*

416B

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

 

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ์ˆซ์ž 0~9์ค‘ ํ•˜๋‚˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฃผ์–ด์ง„ ๊ธ€์ž์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค

 

์ž…๋ ฅ

์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž ๋Œ€๋ฌธ์ž, ์ˆซ์ž 0~9์ค‘ ํ•˜๋‚˜๊ฐ€ ์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง„๋‹ค

 

์ถœ๋ ฅ

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๊ธ€์ž์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค

 

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
 
int main() {
    char unicode;
    scanf("%c",&unicode);
    printf("%d",static_cast<int>(unicode));
    return 0;
}
cs

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

๋ฌธ์ž๋ฅผ ๋ฐ›์•„์„œ ํ•ด๋‹นํ•˜๋Š” ์•„์Šคํ‚ค์ฝ”๋“œ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค

C++์—์„œ๋Š” ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ฃผ๋Š” static_cast<int>() ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค

์ด ํ•จ์ˆ˜๋ฅผ ์“ฐ๊ฒŒ ๋˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ํƒ€์ž… ์˜ค๋ฅ˜๋ฅผ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๊ณ  ์—…์บ์ŠคํŒ…, ๋‹ค์šด์บ์ŠคํŒ…์„ ์ œ์™ธํ•œ ํฌ์ธํ„ฐ์˜ ํ˜• ๋ณ€ํ™˜์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค

 

*๋ฉ”๋ชจ๋ฆฌ*

1984KB

*์‹œ๊ฐ„*

0ms

*์–ธ์–ด*

C++14

*์ฝ”๋“œ๊ธธ์ด*

146B

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

์–ด๋–ค ์–‘์˜ ์ •์ˆ˜ X์˜ ๊ฐ ์ž๋ฆฌ๊ฐ€ ๋“ฑ์ฐจ์ˆ˜์—ด์„ ์ด๋ฃฌ๋‹ค๋ฉด, ๊ทธ ์ˆ˜๋ฅผ ํ•œ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค

๋“ฑ์ฐจ์ˆ˜์—ด์€ ์—ฐ์†๋œ ๋‘ ๊ฐœ ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ์ผ์ •ํ•œ ์ˆ˜์—ด์„ ๋งํ•œ๋‹ค

N์ด ์ฃผ์–ด์กŒ์„ ๋Œ€, 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ํ•œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— 1000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ํ•œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค

 

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
using namespace std;
 
int getHansuCount(int num){
    int count=0;
    if(num<100)
    {
        count = num;
    }
    else{
      count+=99;
      for(int i=100;i<=num;i++){
         bool isHanSu=true;
         int idx=i,diff=(idx%10);      //,๋‚˜๋จธ์ง€
         idx/=10;
         int rest=(idx%10);      //2๋ฒˆ์งธ ์ž๋ฆฟ์ˆ˜ ์‚ฝ์ž…
         diff = diff-rest;   //1๋ฒˆ์งธ์™€ 2๋ฒˆ์งธ ์ž๋ฆฟ์ˆ˜์˜ ์ฐจ์ด ์‚ฝ์ž…
         idx/=10;
         
         while(idx>0){
            if(diff!=rest-(idx%10)){
               isHanSu=false;
               break;
            }
            rest=idx%10;
            idx/=10;
         }
         if(isHanSu)
         {
            count++;
         }
      }
    }
    return count;
}
 
 
int main() {
   int num,count=0;
   scanf("%d",&num);
   count = getHansuCount(num);
   printf("%d",count);
   return 0;
}
cs

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

ํ•œ์ˆ˜๋ผ๋Š” ์šฉ์–ด ์ž์ฒด๊ฐ€ ๋„ˆ๋ฌด ์ดํ•ด๊ฐ€ ์•ˆ๋˜์„œ ํ—ค๋งค๊ฒŒ ๋œ ๋ฌธ์ œ์ด๋‹ค

ํ•œ์ˆ˜๋Š” ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด 1์ž๋ฆฌ ์ˆ˜์ธ 1์€ ํ•œ ๊ฐœ ๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์กฐ๊ฑด ํ•œ์ˆ˜์ด๋‹ค(๋“ฑ์ฐจ์ˆ˜์—ด์„ ๋น„๊ตํ•  ๋Œ€์ƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ)

2์ž๋ฆฌ ์ˆ˜์ธ 10,11,12 ๊ฐ™์€ ๊ฒฝ์šฐ (1,0) (1,1) (1,2) ์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ„์–ด ์ง„๋‹ค

๋“ฑ์ฐจ์ˆ˜์—ด์€ ๊ฐ๊ฐ -1,0,1 ๋กœ ๋˜๊ณ  ๋ฌด์กฐ๊ฑด ํ•œ์ˆ˜์ด๋‹ค(๋น„๊ตํ•  ๋Œ€์ƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ)

๊ทธ๋ž˜์„œ 3์ž๋ฆฌ ์ˆ˜ ์ดํ•˜๋Š” ๋ชจ๋‘ ๋‹ค ํ•œ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— 12๋ฒˆ์ค„์— ๋ณด๋ฉด 100๋ถ€ํ„ฐ for๋ฌธ์ด ์‹œ์ž‘๋œ๋‹ค

while๋ฌธ์ด ๋Œ ๋™์•ˆ 123์˜ ๊ฒฝ์šฐ 123%10=3 (์ผ์˜ ์ž๋ฆฟ์ˆ˜ ๊ตฌํ•˜๊ธฐ) ๊ทธ ๋‹ค์Œ 123/10=12 ์„ ํ•œ ํ›„ 12%10=2(์‹ญ์˜ ์ž๋ฆฟ์ˆ˜)

์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค

์ž๋ฆฟ์ˆ˜๋ฅผ ๊ตฌํ•œ ๋‹ค์Œ ๊ทธ ์ „์— ๊ตฌํ•œ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋นผ์ฃผ์–ด ๋“ฑ์ฐจ์ˆ˜์—ด์˜ ์ฆ๊ฐ๊ฐ’์„ ๊ตฌํ•˜๊ณ  ๊ทธ ๊ฐ’์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ๋™์ผํ•˜๋‹ค๋ฉด

isHanSu=true๋กœ ์œ ์ง€ํ•œ๋‹ค

 

*๋ฉ”๋ชจ๋ฆฌ*

1984KB

*์‹œ๊ฐ„*

0ms

*์–ธ์–ด*

C++14

*์ฝ”๋“œ๊ธธ์ด*

777B

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

๋ฐ˜์‘ํ˜•
728x90

๋ฌธ์ œ

์…€ํ”„ ๋„˜๋ฒ„๋Š” 1949๋…„ ์ธ๋„ ์ˆ˜ํ•™์ž D.R Kaprekar๊ฐ€ ์ด๋ฆ„์„ ๋ถ™์˜€๋‹ค

์–‘์˜ ์ •์ˆ˜ n์— ๋Œ€ํ•ด์„œ d(n)์„ n๊ณผ n์˜ ๊ฐ ์ž๋ฆฌ์ˆ˜๋ฅผ ๋”ํ•˜๋Š” ํ•จ์ˆ˜๋ผ๊ณ  ์ •์˜ํ•˜์ž

์˜ˆ๋ฅผ ๋“ค์–ด d(75)=75+7+5=87์ด๋‹ค

์–‘์˜ ์ •์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด ์ˆ˜๋ฅผ ์‹œ์ž‘ํ•ด์„œ n, d(n),d(d(n)),d(d(d(n))),....๊ณผ ๊ฐ™์€ ๋ฌดํ•œ ์ˆ˜์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค

์ƒ์„ฑ์ž๊ฐ€ ์—†๋Š” ์ˆซ์ž๋ฅผ ์…€ํ”„ ๋„˜๋ฒ„๋ผ๊ณ  ํ•œ๋‹ค

100๋ณด๋‹ค ์ž‘์€ ์…€ํ”„ ๋„˜๋ฒ„๋Š” 1,3,5,7,9,20,31,42,53,64,75,86,97 ์ด 13๊ฐœ๊ฐ€ ์žˆ๋‹ค

10000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์…€ํ”„ ๋„˜๋ฒ„๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•œ๋‹ค

 

์ถœ๋ ฅ

10000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์…€ํ”„ ๋„˜๋ฒ„๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•œ๋‹ค

 

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
using namespace std;
//์žฌ๊ท€ํ•จ์ˆ˜
void recursiveFunc(int idx,bool array[])
{
    int sum=0;
    if(idx<10000)
    {
        sum+=idx;
//๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋”ํ•จ
        while(idx>0){
            sum+=(idx%10);
            idx/=10;
        }
//ํ•ด๋‹น ์ž๋ฆฟ์ˆ˜์— ์ฒดํฌํ•จ
        if(array[sum]==false&&sum<10000)
            array[sum]=true;
        return recursiveFunc(sum,array);
    }
    else{
        return ;
    }
}
 
int main() {
    bool array[10000]={false,};
    for(int i=1;i<10000;i++)
    {
        recursiveFunc(i,array);
    }
    for(int i=1;i<10000;i++){
        if(array[i]==false){
            printf("%d\n",i);
        }
    }
    return 0;
}
cs

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋ƒ๋ฅผ ๋ฌผ์–ด๋ณด๋Š” ๋ฌธ์ œ์ด๋‹ค

10000๊ฐœ์˜ bool ๋ฐฐ์—ด์„ ๋งŒ๋“  ํ›„ ์…€ํ”„ ๋„˜๋ฒ„๋ฅผ ์ฒดํฌํ•˜๋Š” ํ•จ์ˆ˜์—์„œ ๋งŒ์•ฝ ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ๋‚˜์˜จ๋‹ค๋ฉด ๊ทธ ์ž๋ฆฌ์— true๋ฅผ ๋„ฃ๋Š”๋‹ค

๋ชจ๋“  ์ฒดํฌ๊ฐ€ ๋๋‚œ ํ›„ false ๊ฐ’์„ ๊ฐ€์ง„ ๋ฐฐ์—ด์˜ ์ž๋ฆฌ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค

์˜ˆ์™ธ ์ฒดํฌ ๊ฐ™์€ ๊ฒฝ์šฐ ์…€ํ”„ ๋„˜๋ฒ„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์—์„œ 10000์„ ๋„˜๋Š” ๊ฒฝ์šฐ์™€ idx๊ฐ€ 10000์„ ๋„˜๋Š” ๊ฒฝ์šฐ ๋‘ ๊ฐœ์ด๋‹ค

๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฑฐ์ณ์„œ ์ง„ํ–‰๋œ๋‹ค

์ง€๊ธˆ ๋ณด๋‹ˆ ์ด๋ฏธ true ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” idx๋“ค์€ ์ฒดํฌ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋” ๊ณ„์‚ฐ์— ํšจ์œจ์ ์ผ ๊ฒƒ ๊ฐ™๋‹ค

 

*๋ฉ”๋ชจ๋ฆฌ*

1984KB

*์‹œ๊ฐ„*

20ms

*์–ธ์–ด*

C++14

*์ฝ”๋“œ ๊ธธ์ด*

484B

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•
728x90

 

 

 

๋ฌธ์ œ

์ •์ˆ˜ n๊ฐœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, n๊ฐœ์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค

 

C++, C++11, C++14, C++17, C++ (Clang), C++11 (Clang), C++14 (Clang), C++17 (Clang): long long sum(std::vector<int> &a);

  • a: ํ•ฉ์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ์ •์ˆ˜ n๊ฐœ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐฐ์—ด (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
  • ๋ฆฌํ„ด๊ฐ’: a์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ •์ˆ˜ n๊ฐœ์˜ ํ•ฉ

์ฝ”๋“œ (๋”๋ณด๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ํ™•์ธํ•˜์„ธ์š”)

๋”๋ณด๊ธฐ
1
2
3
4
5
6
7
8
9
#include <vector>
long long sum(std::vector<int> &a) {
    long long ans = 0;
    for(int i=0;i<a.size();i++)
    {
        ans+=a[i];
    }
    return ans;
}
cs

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

์ด ๋ฌธ์ œ ๊ฐ™์€ ๊ฒฝ์šฐ 2๋ฒˆ์ด๋‚˜ ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ๋„์› ์—ˆ๋Š”๋ฐ ์ด์œ ๊ฐ€ ๋ฉ”์ธํ•จ์ˆ˜๊นŒ์ง€ ๋‚ด๊ฐ€ ๋‹ค ๋งŒ๋“ค์–ด์„œ์˜€๋‹ค... ํ•จ์ˆ˜ ์›ํ˜•๋งŒ ๋งŒ๋“ค๋ฉด ๋ฐฑ์ค€์—์„œ ์•Œ์•„์„œ ๋ฉ”์ธ์„ ์„ ์–ธํ•˜๋„๋ก ํ•˜๋‹ˆ ํ•จ์ˆ˜๋งŒ ๋งŒ๋“ค์–ด์„œ ์ œ์ถœํ•˜๋ฉด ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ warning์„ ๋„์šฐ๋Š”๋ฐ a.size๋ฅผ int๋กœ ๋ฐ›์•„์„œ ๊ทธ๋Ÿฐ๊ฒƒ ๊ฐ™๋‹ค unsigned int๋กœ ๋ฐ›์œผ๋ฉด warning์ด ๋œจ์ง€ ์•Š๋Š”๋‹ค.

 

*๋ฉ”๋ชจ๋ฆฌ*

13704B

*์‹œ๊ฐ„*

4ms

*์–ธ์–ด*

C++ 14

*์ฝ”๋“œ ๊ธธ์ด*

152B

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

๋ฐ˜์‘ํ˜•

'์•Œ๊ณ ๋ฆฌ์ฆ˜ > BaekJoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ 1065๋ฒˆ: ํ•œ์ˆ˜  (0) 2020.09.27
BOJ 4673๋ฒˆ: ์…€ํ”„ ๋„˜๋ฒ„  (0) 2020.09.22
BOJ 4344๋ฒˆ: ํ‰๊ท ์€ ๋„˜๊ฒ ์ง€  (0) 2020.08.21
BOJ 8959๋ฒˆ: OXํ€ด์ฆˆ  (0) 2020.08.18
BOJ 1546๋ฒˆ: ํ‰๊ท   (0) 2020.08.13
728x90

 

 

๋ฌธ์ œ

๋ฐ˜์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ๋ฐ˜์˜ ํ•™์ƒ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ๊ฐ๊ฐ ํ•™์ƒ๋“ค์˜ ์ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์€ ํ›„ ๊ทธ๋“ค์˜ ํ‰๊ท ์„ ๊ตฌํ•ด์„œ ๋ฐ˜์—์„œ ํ‰๊ท ์„ ๋„˜๋Š” ํ•™์ƒ๋“ค์˜ ๋น„์œจ์„ ์ถœ๋ ฅํ•˜๋ผ

 

์ถœ๋ ฅ

๊ฐ ์ผ€์ด์Šค๋งˆ๋‹ค ํ•œ ์ค„์”ฉ ํ‰๊ท ์„ ๋„˜๋Š” ํ•™์ƒ๋“ค์˜ ๋น„์œจ์„ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์†Œ์ˆ˜์  ์…‹์งธ ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅํ•œ๋‹ค

 

์ž…๋ ฅ

5

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

 

์ถœ๋ ฅ

40.000%

57.143%

33.333%

66.667%

55.556%

 

์ฝ”๋“œ (๋”๋ณด๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ํ™•์ธํ•˜์„ธ์š”)

๋”๋ณด๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
int main() {
    int C,studentNum,count=0;
    float sum=0,average=0;
    scanf("%d",&C);
    for(int i=0;i<C;i++){
        scanf("%d",&studentNum);
        float array[studentNum]={0,};
        for(int j=0;j<studentNum;j++){
            scanf("%f",&array[j]);
            sum+=array[j];
        }
        average = sum/studentNum;    //sum์ด flaotํ˜•์ด๋ฏ€๋กœ floatํ˜•์œผ๋กœ ๋ณ€ํ™˜
        for(int j=0;j<studentNum;j++){
            if(average<array[j]){    count++;
            }
        }
        printf("%.3f%\n",(float)count/studentNum*100);    //์†Œ์ˆ˜์  3์งธ๊นŒ์ง€ ์ถœ๋ ฅ
        sum=0;
        count=0;
    }
    return 0;
}
cs

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

์ฒ˜์Œ ๋Œ€์ถฉ ์ฝ๊ณ  ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ์ค„ ์•Œ๊ณ  ๋ฐฐ์—ด์„ ํ• ๋‹นํ•˜์ง€ ์•Š์•˜๋‹ค๊ฐ€ ํ‰๊ท ์˜ ๋น„์œจ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ๋‹ค์‹œ ๋ฐฐ์—ด์„ ์„ ์–ธํ–ˆ๋‹ค. ๋ฐฐ์—ด ์„ ์–ธ์€ ์œ ๋™์ ์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•ด for๋ฌธ ์•ˆ์— ์ง‘์–ด๋„ฃ์—ˆ์œผ๋ฉฐ ๋ชจ๋“  ์ž…๋ ฅ์„ ๋ฐ›์œผ๋ฉด์„œ sum(ํ•ฉ)์„ ๊ตฌํ•œ ๋’ค average(ํ‰๊ท )์„ sum/ํ•™์ƒ์ˆ˜ ๋กœ ๊ตฌํ•˜์˜€๋‹ค. %.3f ์ธ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์†Œ์ˆ˜์  3์งธ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅํ•˜๋„๋ก ํ•˜์˜€๋‹ค. ์ถœ๋ ฅ ํ›„ ๋‹ค์Œ for๋ฌธ์—์„œ ๊ฐ™์€ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด sum๊ณผ count๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์˜€๋‹ค.

 

*๋ฉ”๋ชจ๋ฆฌ*

1984B

*์‹œ๊ฐ„*

0ms

*์–ธ์–ด*

C++ 14

*์ฝ”๋“œ ๊ธธ์ด*

532B

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

๋ฐ˜์‘ํ˜•
728x90

 

๋ฌธ์ œ

O๋Š” ๋ฌธ์ œ๋ฅผ ๋งž์€ ๊ฒƒ์ด๊ณ , X๋Š” ๋ฌธ์ œ๋ฅผ ํ‹€๋ฆฐ ๊ฒƒ์ด๋‹ค ๋ฌธ์ œ๋ฅผ ๋งž์€ ๊ฒฝ์šฐ ๊ทธ ๋ฌธ์ œ์˜ ์ ์ˆ˜๋Š” ๊ทธ ๋ฌธ์ œ๊นŒ์ง€ ์—ฐ์†๋œ O์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋œ๋‹ค ์˜ˆ๋ฅผ ๋“ค์–ด "OOXXOXXOOO" ์˜ ์ ์ˆ˜๋Š” 1+2+0+0+1+0+0+1+2+3=10์ ์ด๋‹ค 

OXํ€ด์ฆˆ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค

 

์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ์ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค

 

์ž…๋ ฅ

5

OOXXOXXOOO

OOXXOOXXOO

OXOXOXOXOXOXOX

OOOOOOOOOO

OOOOXOOOOXOOOOX

 

์ถœ๋ ฅ

10

9

7

55

30

 

์ฝ”๋“œ

#include <iostream>

int main() {
    int N,sum=0,comboStack=0,idx=0;
    bool combo=false;
    scanf("%d",&N);
    for(int i=0;i<N;i++)
    {
        char temp[80];   //scanf๋Š” string์„ ๋ฐ›์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—
        scanf("%s",&temp);    
        while(temp[idx]!='\0'){
            if(temp[idx]=='O') {
                if(combo){ sum+=comboStack;} //์ฝค๋ณด์ผ ๊ฒฝ์šฐ ์ถ”๊ฐ€ ์ ์ˆ˜
                else {combo=true;}
                comboStack++;
                sum++;        //O์ผ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ์ ์ˆ˜
            
            }
            else if(temp[idx]=='X')
            {
                combo=false;
                comboStack=0;
            }
            idx++;
        }
        printf("%d\n",sum);
        sum=0;
        idx=0;
        comboStack=0;
    }
    return 0;
}

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

์ด ๊ธ€์€ ๊ฒŒ์ž„์˜ ์ฝค๋ณด ์‹œ์Šคํ…œ๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ๋ฌธ์ž์—ด์„ ๋ฐ›์•„์„œ ๋ฌธ์ž์—ด์ด null('\0')์ด ์•„๋‹๋•Œ๊นŒ์ง€ ์‹คํ–‰ํ•ด์„œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋„์ถœํ•œ๋‹ค. ์ฝค๋ณด์ผ๊ฒฝ์šฐ comboStack์˜ ๊ฐ’์„ ์ถ”๊ฐ€๋กœ ๋”ํ•ด์ฃผ๋„๋ก ํ•˜๋ฉฐ O์ธ ๊ฒฝ์šฐ์—๋Š” comboStack์„ ++๋กœ ์Œ“์•„์ฃผ๋„๋ก ํ•œ๋‹ค. ํ•œ์ค„์˜ ์นด์šดํŠธ๊ฐ€ ๋‹ค ๋๋‚œ ๊ฒฝ์šฐ 27~29์˜ ๊ฐ’์„ ๋ณด๋ฉด index,sum(ํ•ฉ)๊ณผ comboStack์„ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

*๋ฉ”๋ชจ๋ฆฌ*

1984B

*์‹œ๊ฐ„*

0ms

*์–ธ์–ด*

C++ 14

*์ฝ”๋“œ ๊ธธ์ด*

607B

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•
728x90

 

 

๋ฌธ์ œ

์„ธ์ค€์ด๋Š” ์ž๊ธฐ ์ ์ˆ˜ ์ค‘์— ์ตœ๋Œ“๊ฐ’์„ ๊ณจ๋ž๋‹ค ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ๋ชจ๋“  ์ ์ˆ˜๋ฅผ ์ ์ˆ˜/M*100์œผ๋กœ ๊ณ ์ณค๋‹ค

์ƒˆ๋กœ ๊ณ„์‚ฐํ•œ ์„ธ์ค€์ด์˜ ์„ฑ์ ์˜ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค

 

์ถœ๋ ฅ

์ฒซ์งธ์ค„์— ์ƒˆ๋กœ์šด ํ‰๊ท ์„ ์ถœ๋ ฅํ•œ๋‹ค ์‹ค์ œ ์ •๋‹ต๊ณผ ์ถœ๋ ฅ๊ฐ’์˜ ์ ˆ๋Œ€์˜ค์ฐจ ๋˜๋Š” ์ƒ๋Œ€์˜ค์ฐจ๊ฐ€ 1/100 ์ดํ•˜์ด๋ฉด ์ •๋‹ต์ด๋‹ค

 

์ž…๋ ฅ

3

40 80 60

 

์ถœ๋ ฅ

75.0

 

์ฝ”๋“œ (๋”๋ณด๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ํ™•์ธํ•˜์„ธ์š”)

๋”๋ณด๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
int main() {
    int N;
    float max=0,sum=0;
    scanf("%d",&N);
    float array[N]={0,};
    for(int i=0;i<N;i++)
    {
        scanf("%f",&array[i]);
        if(max<array[i]) max = array[i]; //max๊ฐ’ ๊ฐฑ์‹ ํ•˜๊ธฐ
    }
    for(int i=0;i<N;i++)
    {
        array[i] = array[i]/max*100; //์„ฑ์  ๊ฐ’ ์ˆ˜์ •ํ•˜๊ธฐ
        sum +=array[i]; //ํ‰๊ท ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ์„ฑ์  ํ•ฉ ๊ตฌํ•˜๊ธฐ
    }
    printf("%f",sum/N);
    return 0;
}
cs

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

ํ‰๊ท  ๊ฐ’์ด ์ •์ˆ˜๊ฐ€ ์•„๋‹Œ ์‹ค์ˆ˜๋กœ ๋‚˜์˜ค๋ฏ€๋กœ int๊ฐ€ ์•„๋‹Œ floatํ˜•์œผ๋กœ ๋ฐฐ์—ด์„ ์„ ์–ธ ๋ฐ ํ•ฉ๊ณ„๋ฅผ ๋งŒ๋“ ๋‹ค. ๋ฐฐ์—ด์˜ ๊ฐฏ์ˆ˜์ธ N์„ ์ •์ˆ˜๋กœ ์ง€์ •ํ–ˆ๋‹ค(๋ฐฐ์—ด ํฌ๊ธฐ๋กœ ๋„ฃ๊ธฐ ์œ„ํ•ด ๋ฌด์กฐ๊ฑด ์ •์ˆ˜๋กœ ์„ ์–ธ). ํ‰๊ท ์„ ๊ตฌํ•  ๋•Œ ์ •์ˆ˜/์ •์ˆ˜ = ์ •์ˆ˜๊ฐ€ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ˆ˜/์ •์ˆ˜ = ์‹ค์ˆ˜๊ฐ€ ๋˜๋ฏ€๋กœ sum์„ ์‹ค์ˆ˜๋กœ ์ง€์ •ํ•ด์ฃผ์—ˆ๋‹ค.

 

*๋ฉ”๋ชจ๋ฆฌ*

1984B

*์‹œ๊ฐ„*

0ms

*์–ธ์–ด*

C++ 14

*์ฝ”๋“œ ๊ธธ์ด*

299B

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•
728x90

 

 

๋ฌธ์ œ

์ˆ˜ 10๊ฐœ๋ฅผ ์ž…๋ ฅ๋ฐ›์€ ๋’ค, ์ด๋ฅผ 42๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์—, 42๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ, ์„œ๋กœ ๋‹ค๋ฅธ ๋‚˜๋จธ์ง€๊ฐ€ ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค

 

์ž…๋ ฅ

39               (39)

40               (40)

41               (41)

42               (0)

43               (1)

44               (2)

82               (40)

83               (41)

84               (0)

85               (1)

 

์ถœ๋ ฅ

6

 

์ฝ”๋“œ (๋”๋ณด๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ํ™•์ธํ•˜์„ธ์š”)

๋”๋ณด๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
int main() {
    int count=0;
    int array[10]={0,};
    bool isCheck=false;            //๋‹ค๋ฅด์ง€ ์•Š์„ ๋•Œ true ๋‹ค๋ฅผ ๋•Œ false
    for(int i=0;i<10;i++)         //์ž…๋ ฅ๋ฐ›๊ธฐ
    {
        scanf("%d",&array[i]);
        array[i] = array[i]%42;        //๋‚˜๋จธ์ง€ ๊ฐ’ ๋ฐฐ์—ด์— ์‚ฝ์ž…
    }
    for(int i=0;i<10;i++)
    {
        isCheck=false;
        for(int j=i ;j<10;j++)
        {
            if(array[i]==array[j]){        //๋งŒ์•ฝ ์„œ๋กœ์˜ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ์ฒดํฌํ•˜์ง€ ์•Š๋„๋ก ํ•จ
                if(i!=j) isCheck = true;//์ž๊ธฐ ์ž์‹ ์˜ ๊ฐ’๊ณผ ํ˜ผ๋™๋˜์ง€ ์•Š๋„๋ก ์˜ˆ์™ธ์ฒ˜๋ฆฌ
            }
        }
        if(!isCheck) count++;
    }
    printf("%d",count);
    return 0;
}
cs

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

์ค‘์ฒฉ for๋ฌธ์„ ์ด์šฉํ•ด์„œ ๊ฒฝ์šฐ์˜ ์ˆ˜ 10!๋งŒํผ ํ™•์ธํ•ด์„œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋„์ถœํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋Œ€์‹  ์ค‘์ฒฉ๋˜๋Š” ๊ฒฝ์šฐ ๋‚˜ ์ž์‹ ์— ๋Œ€ํ•œ ์ฒดํฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์—ˆ๋‹ค. ๋‚˜์˜ ์ฝ”๋“œ ์™ธ์—๋„ 42์‚ฌ์ด์ฆˆ์˜ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ์„œ ์ฒดํฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณด์•˜๋Š”๋ฐ ๋‚˜๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋œ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ฝ”๋“œ๋„ ๋งŽ์ด ์‚ดํŽด๋ณด๊ณ  ์„ฑ์ฐฐํ•˜๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.

 

*๋ฉ”๋ชจ๋ฆฌ*

1984B

*์‹œ๊ฐ„*

0ms

*์–ธ์–ด*

C++

*์ฝ”๋“œ ๊ธธ์ด*

589B

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

๋ฐ˜์‘ํ˜•

'์•Œ๊ณ ๋ฆฌ์ฆ˜ > BaekJoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ 8959๋ฒˆ: OXํ€ด์ฆˆ  (0) 2020.08.18
BOJ 1546๋ฒˆ: ํ‰๊ท   (0) 2020.08.13
BOJ 2577๋ฒˆ: ์ˆซ์ž์˜ ๊ฐœ์ˆ˜  (0) 2020.08.10
BOJ 5543๋ฒˆ: ์ƒ๊ทผ๋‚ ๋“œ  (0) 2020.08.09
BOJ 2562๋ฒˆ: ์ตœ๋Œ“๊ฐ’  (0) 2020.08.08
728x90

 

 

๋ฌธ์ œ

์„ธ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜ A,B,C๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ A x B x C๋ฅผ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ์— 0๋ถ€ํ„ฐ 9๊นŒ์ง€ ๊ฐ๊ฐ์˜ ์ˆซ์ž๊ฐ€ ๋ช‡ ๋ฒˆ์”ฉ ์“ฐ์˜€๋Š”์ง€๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” A x B x C์˜ ๊ฒฐ๊ณผ์— 0์ด ๋ช‡ ๋ฒˆ ์“ฐ์˜€๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค. 1๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ๊ฐ๊ฐ ๋ช‡ ๋ฒˆ ์“ฐ์˜€๋Š”์ง€ ์ฐจ๋ก€๋กœ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค

 

์ž…๋ ฅ

150

266

427

 

์ถœ๋ ฅ

3

1

0

2

0

0

0

2

0

0

 

์ฝ”๋“œ (๋”๋ณด๊ธฐ๋ฅผ ๋ˆ„๋Ÿฌ ํ™•์ธํ•˜์„ธ์š”)

๋”๋ณด๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
 
int main() {
    int multiple=0,num=0;
    int array[10]={0,};
    //์ž…๋ ฅ ๋ฐ ๊ณ„์‚ฐ
    for(int i=0;i<3;i++)
    {
        scanf("%d",&num);
        if(i==0){
            multiple = num;
        }
        else {
            multiple *= num;
        }
    }
    // ๋‚˜๋ˆ„๊ธฐ 10์˜ ๋ชซ์ด 0๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์„ ๋•Œ๊นŒ์ง€ ์ง„ํ–‰
    while(1)
    {
        array[multiple%10]++;        //10์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์˜ ์ž๋ฆฌ์— ++ ํ•ด์คŒ
        if(multiple/10<=0break;
        multiple/=10;
    }
    //์ถœ๋ ฅ
    for(int i=0;i<10;i++)
    {
        printf("%d\n",array[i]);
    }
    return 0;
}
cs

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

๊ฐ๊ฐ์˜ ์ž๋ฆฟ์ˆ˜๊ฐ€ ์–ผ๋งˆ์ธ์ง€๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” 10์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋‹ค. 10์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€์˜ ๋ฐฐ์—ด์— ++๋ฅผ ํ•ด์ฃผ์–ด์„œ ์ž๋ฆฟ์ˆ˜๋ฅผ ์นด์šดํŒ…ํ•˜์˜€๋‹ค. ๊ตฌํ•˜๋ ค๋Š” ์ˆซ์ž์˜ ์ž๋ฆฟ์ˆ˜๊ฐ€ ๋ช‡๊ฐœ์ธ์ง€ ์•Œ๋ฉด for๋ฌธ์„ ์“ฐ๋ฉด ๋˜์ง€๋งŒ ํ˜„์žฌ๋Š” ์œ ๋™์ ์ด๋ฏ€๋กœ while๋ฌธ์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. 

 

*๋ฉ”๋ชจ๋ฆฌ*

1984B

*์‹œ๊ฐ„*

0ms

*์–ธ์–ด*

C++ 14

*์ฝ”๋“œ ๊ธธ์ด*

499B

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

 

๋ฐ˜์‘ํ˜•

'์•Œ๊ณ ๋ฆฌ์ฆ˜ > BaekJoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ 1546๋ฒˆ: ํ‰๊ท   (0) 2020.08.13
BOJ 3052๋ฒˆ: ๋‚˜๋จธ์ง€  (0) 2020.08.11
BOJ 5543๋ฒˆ: ์ƒ๊ทผ๋‚ ๋“œ  (0) 2020.08.09
BOJ 2562๋ฒˆ: ์ตœ๋Œ“๊ฐ’  (0) 2020.08.08
BOJ 10818๋ฒˆ: ์ตœ์†Œ, ์ตœ๋Œ€  (0) 2020.08.07
728x90

 

 

๋ฌธ์ œ

์ฃผ๋ฌธํ•  ๋•Œ, ์ž์‹ ์ด ์›ํ•˜๋Š” ํ–„๋ฒ„๊ฑฐ์™€ ์Œ๋ฃŒ๋ฅผ ํ•˜๋‚˜์”ฉ ๊ณจ๋ผ, ์„ธํŠธ๋กœ ๊ตฌ๋งคํ•˜๋ฉด, ๊ฐ€๊ฒฉ์˜ ํ•ฉ๊ณ„์—์„œ 50์›์„ ๋บ€ ๊ฐ€๊ฒฉ์ด ์„ธํŠธ๋ฉ”๋‰ด ๊ฐ€๊ฒฉ์ด ๋œ๋‹ค ํ–„๋ฒ„๊ฑฐ๋Š” ์ด 3์ข…๋ฅ˜, ์Œ๋ฃŒ์ˆ˜๋Š” ์ด 2์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค

ํ–„๋ฒ„๊ฑฐ์™€ ์Œ๋ฃŒ์˜ ๊ฐ€๊ฒฉ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ์‹ผ ์„ธํŠธ ๋ฉ”๋‰ด์˜ ๊ฐ€๊ฒฉ์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค

 

์ž…๋ ฅ

800

700

900

198

330

 

์ถœ๋ ฅ

848

 

์ž…๋ ฅ

1999

1999

100

189

100

 

์ถœ๋ ฅ

150

 

์ฝ”๋“œ (๋”๋ณด๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ํ™•์ธํ•˜์„ธ์š”)

๋”๋ณด๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int main() {
    int hamburger=0,drink=0;
    int lowHamCost=0,lowDrinkCost=0;
    for(int i=0;i<3;i++)
    {
        scanf("%d",&hamburger);
        if(i==0)lowHamCost = hamburger;
        else if(lowHamCost>hamburger) lowHamCost = hamburger;
    }
    for(int i=0;i<2;i++)
    {
        scanf("%d",&drink);
        if(i==0)lowDrinkCost = drink;
        else if(lowDrinkCost>drink) lowDrinkCost = drink;
    }
    printf("%d",lowHamCost+lowDrinkCost-50);
    
    return 0;
}
cs

 

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

for๋ฌธ์„ ๋ฒ„๊ฑฐ์™€ ์Œ๋ฃŒ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด์„œ ๊ณ„์‚ฐ์„ ํ•˜์˜€๋‹ค. ํ•˜๋Š” ๋ฐฉ์‹์€ for๋ฌธ์—์„œ 0๋ฒˆ์งธ์ผ๋•Œ๋Š” ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฐ’์˜ ๋ณ€์ˆ˜์— ์‚ฝ์ž…ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋น„๊ตํ•ด์„œ ์ž…๋ ฅ๋ฐ›์€ ๊ฐ€๊ฒฉ์ด ๋” ๋‚ฎ์œผ๋ฉด ๊ธฐ์กด์˜ ๊ฒƒ์„ ๋ฐ”๊พธ๋„๋ก ํ•œ๋‹ค. ๋ชจ๋“  ๊ณ„์‚ฐ์ด ๋๋‚œ ํ›„ ๋งˆ์ง€๋ง‰์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ณ€์ˆ˜๋ฅผ ๋”ํ•œ ํ›„ -50์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

*๋ฉ”๋ชจ๋ฆฌ*

1984B

*์‹œ๊ฐ„*

0ms

*์–ธ์–ด*

C++ 14

*์ฝ”๋“œ ๊ธธ์ด*

428B

 

 

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

๋ฐ˜์‘ํ˜•

+ Recent posts