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

๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/BOJ

[C++/BOJ] 2149 : ์•”ํ˜ธ ํ•ด๋…

๋ฌธ์ œ

์–ด๋–ค ๋ฌธ์žฅ์„ ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•”ํ˜ธํ™”ํ•˜๋ ค ํ•œ๋‹ค. ์•”ํ˜ธํ™”ํ•˜๊ธฐ ์ „์˜ ๋ฌธ์žฅ์„ ํ‰๋ฌธ์ด๋ผ ํ•˜๋ฉฐ, ์•”ํ˜ธํ™” ๋œ ๋ฌธ์žฅ์€ ์•”ํ˜ธ๋ฌธ์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ‚ค, ํ‰๋ฌธ, ์•”ํ˜ธ๋ฌธ์€ ๋ชจ๋‘ ์˜์–ด ๋Œ€๋ฌธ์ž๋กœ ๋œ ๊ณต๋ฐฑ ์—†๋Š” ๋ฌธ์žฅ์ด๋‹ค.

ํ‚ค์˜ ๊ธธ์ด๋ฅผ N์ด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ, ์šฐ์„  ํ‰๋ฌธ์„ N ๊ธ€์ž์”ฉ ์ž˜๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์—ดํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ‰๋ฌธ์ด MEETMEBYTHEOLDOAKTREENTH ์ด๊ณ , ํ‚ค๊ฐ€ BATBOY๋ผ๊ณ  ํ•ด ๋ณด์ž.

 


์ œ์ผ ์œ—์ค„์€ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ํ‚ค๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์“ด ๊ฒƒ์ด๋‹ค. ์ด์ œ ์ด ํ–‰๋ ฌ(๋ฐฐ์—ด)์„ ์—ด(Column) ๋‹จ์œ„๋กœ ์ •๋ ฌ์„ ํ•˜๋Š”๋ฐ, ์ •๋ ฌ์„ ํ•˜๋Š” ํ‚ค์ค€์€ ํ‚ค์˜ ๋ฌธ์ž๋กœ ํ•œ๋‹ค. ์ฆ‰ BATBOY๋ฅผ ์ •๋ ฌํ•˜์—ฌ ABBOTY์™€ ๊ฐ™์ด ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. B์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ž์˜ ๊ฒฝ์šฐ์—๋Š” ์›๋ž˜์˜ ํ–‰๋ ฌ์—์„œ ๋” ์™ผ์ชฝ์— ์žˆ์—ˆ๋˜ ๊ฒƒ์„ ๋จผ์ € ์“ด๋‹ค. ์ •๋ ฌ์„ ํ•œ ํ–‰๋ ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 


B๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์™ผ์ชฝ์— ์žˆ์—ˆ๋˜ (B)MBLR์ด ๋จผ์ € ๋‚˜์™”๋‹ค. ์ด์ œ ์ด์™€ ๊ฐ™์ด ์ •๋ ฌํ•œ ํ–‰๋ ฌ์„ ์—ด ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์€ ๊ฒƒ ๋จผ์ €, ์—ด ๋ฒˆํ˜ธ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ํ–‰ ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์€ ๊ฒƒ ์ˆœ์œผ๋กœ ๋‚˜์—ดํ•˜๋ฉด ์•”ํ˜ธ๋ฌธ์ด ๋œ๋‹ค. ์ฆ‰ ์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์˜ ์•”ํ˜ธ๋ฌธ์€ EYDEMBLRTHANMEKTETOEEOTH ๊ฐ€ ๋œ๋‹ค.

ํ‚ค์™€ ์•”ํ˜ธ๋ฌธ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‰๋ฌธ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ‚ค๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ๋‘˜์งธ ์ค„์— ์•”ํ˜ธ๋ฌธ์ด ์ฃผ์–ด์ง„๋‹ค. ํ‚ค์™€ ์•”ํ˜ธ๋ฌธ์€ ๋ชจ๋‘ ์˜์–ด ๋Œ€๋ฌธ์ž๋กœ๋งŒ ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์•”ํ˜ธ๋ฌธ์˜ ๊ธธ์ด๊ฐ€ ํ•ญ์ƒ ํ‚ค์˜ ๊ธธ์ด์˜ ๋ฐฐ์ˆ˜๋ผ๊ณ  ํ•˜์ž. ํ‚ค์˜ ๊ธธ์ด๋Š” 10์ž ์ดํ•˜์ด๋ฉฐ ์•”ํ˜ธ๋ฌธ์˜ ๊ธธ์ด๋Š” 100์ž ์ดํ•˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ํ‰๋ฌธ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 


 

๋ฐฑ์ค€ ์‹ค๋ฒ„ 3์ธ๋ฐ ์ œ์ถœํ•œ ์‚ฌ๋žŒ์ด ์œ ๋… ์ ์€ ๋ฌธ์ œ์ด๋‹ค. ๋‹ค๋“ค ๋ฌธ์ œ๊ฐ€ ๊ธธ์–ด์„œ ์ฝ๋‹ค๊ฐ€ ํฌ๊ธฐํ–ˆ๋‚˜?

๊ทผ๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๋ฌธ์ œ ์ดํ•ด๋Š” ์‰ฝ๋‹ค. ๊ตฌํ˜„์ด ์•ฝ๊ฐ„ ๋ณต์žกํ•ด์„œ ๊ทธ๋ ‡์ง€ ๊ทธ๋ƒฅ ๋ฌธ์ž์—ด ํ™œ์šฉ ๋ฌธ์ œ์ธ๋“ฏ

 

๋ฌธ์ œ ์„ค๋ช…์€ ํ‰๋ฌธ์„ ์•”ํ˜ธ๋ฌธ์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋‚ด์šฉ์ด๊ณ , ์š”๊ตฌ์‚ฌํ•ญ์€ ์•”ํ˜ธ๋ฌธ ์ž…๋ ฅ ์‹œ ํ‰๋ฌธ์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋‚ด์šฉ์ด๋ผ์„œ

์„ค๋ช…๊ณผ ๋ฐ˜๋Œ€๋กœ ์ƒ๊ฐํ•ด์•ผํ•œ๋‹ค.

์ดํ•ด๋ ฅ์ด ์ค‘์š”ํ•œ๋“ฏ!

 

 

๋‚œ ํšจ์œจ ๊ทธ๋Ÿฐ๊ฑฐ ๋ชจ๋ฅด๋Š” ์ฝ”๋“œ ํญ์ฃผ๊ธฐ๊ด€์ฐจ๋‹ค

๊ทธ๋ƒฅ ๋ง‰ ํ’€๋‹ค๋ณด๋‹ˆ ์‚ผ์ค‘ for๋ฌธ์ด ๋“ฑ์žฅํ•ด๋ฒ„๋ ธ๋Š”๋ฐ ์—ฌ๋Ÿฌ๋ถ„์€ ๋” ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์‹ค ์ˆ˜ ์žˆ์œผ์‹ค๊ฒ๋‹ˆ๋‹ค..

์ฒ˜์Œ์— map ์“ฐ๋ ค๋‹ค๊ฐ€ ์ดํ„ฐ๋ ˆ์ดํ„ฐ ์ ‘๊ทผ๋•Œ๋ฌธ์— ๋‚ด๋‹ค๋ฒ„๋ฆฌ๊ณ  pair๋กœ ๋ฐ”๊ฟˆ

 

1. pair๋กœ key ๋ฌธ์ž๊ฐ’์ด๋ž‘ ์ˆœ์„œ ์ €์žฅํ•˜๊ณ , key๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•จ

2. lock์—์„œ key์‚ฌ์ด์ฆˆ๋กœ ๋‚˜๋ˆˆ ํฌ๊ธฐ (ํ–‰ ๋†’์ด)๋งŒํผ ์ž˜๋ผ์„œ ์ƒˆ matrix์— ๋„ฃ์–ด์คŒ

3. ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ

 

 

๋‚˜์˜ ํ’€์ด

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

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    string key = "";
    string lock = "";
    vector<string> v;
    vector<pair<char, int>> p;
    char mat[102][102];

    cin >> key >> lock;

    int key_size = key.length();
    int row = lock.length() / key_size;

    for (int i = 0; i < key_size; ++i){
        p.push_back({key[i], i});
    }
    sort(p.begin(), p.end()); // key ๋ฌธ์ž ๋ฐ ๊ทธ ์ˆœ์„œ๋ฅผ ์Œ์œผ๋กœ ์ €์žฅ ํ›„ ๋ฌธ์ž๊ธฐ์ค€ ์ •๋ ฌ

    for (int i = 0; i < key_size; ++i) {
        for (int j = 0; j < key_size; ++j){
            if (p[i].second == j){
                string s = lock.substr(i*row, (i+1)*row);
                for (int h = 0; h < row; ++h){
                    mat[h][j] = s[h];
                }
            }
        }
    }

    for (int i = 0; i < row; ++i){
        for (int j = 0; j < key_size; ++j){
            cout << mat[i][j];
        }
    }
    return 0;
}