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

[๋ฐฑ์ค€/C++] 2941๋ฒˆ : ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ

by nitronium102 2021. 7. 18.

๋ฌธ์ œ

์˜ˆ์ „์—๋Š” ์šด์˜์ฒด์ œ์—์„œ ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ์„ ์ž…๋ ฅํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ์„ ๋ณ€๊ฒฝํ•ด์„œ ์ž…๋ ฅํ–ˆ๋‹ค.

ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ๋ณ€๊ฒฝ

ฤ c=
ฤ‡ c-
dลพ dz=
ฤ‘ d-
lj lj
nj nj
š s=
ลพ z=

์˜ˆ๋ฅผ ๋“ค์–ด, ljes=njak์€ ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ 6๊ฐœ(lj, e, š, nj, a, k)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ช‡ ๊ฐœ์˜ ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

dลพ๋Š” ๋ฌด์กฐ๊ฑด ํ•˜๋‚˜์˜ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์“ฐ์ด๊ณ , d์™€ ลพ๊ฐ€ ๋ถ„๋ฆฌ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ง€ ์•Š๋Š”๋‹ค. lj์™€ nj๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ์œ„ ๋ชฉ๋ก์— ์—†๋Š” ์•ŒํŒŒ๋ฒณ์€ ํ•œ ๊ธ€์ž์”ฉ ์„ผ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ตœ๋Œ€ 100๊ธ€์ž์˜ ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž์™€ '-', '='๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

๋‹จ์–ด๋Š” ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๋ฌธ์ œ ์„ค๋ช…์˜ ํ‘œ์— ๋‚˜์™€์žˆ๋Š” ์•ŒํŒŒ๋ฒณ์€ ๋ณ€๊ฒฝ๋œ ํ˜•ํƒœ๋กœ ์ž…๋ ฅ๋œ๋‹ค.

์ถœ๋ ฅ

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ๋ช‡ ๊ฐœ์˜ ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

ํ’€์ด

01. ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ์„ vector๋กœ ์„ ์–ธ

02. find ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์—์„œ ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ idx ์ฐพ๊ธฐ

03. replace ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํฌ๋กœ์•„ํ‹ฐ์•„ ๋‹จ์–ด๋ฅผ "#"๋กœ ๋ณ€๊ฒฝ

04. ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ๊ตฌํ•˜๊ธฐ

-> 01, 02๋ฒˆ๊นŒ์ง€๋Š” ๋ฌด๋‚œํ•˜๊ฒŒ ํ–ˆ์œผ๋‚˜ ๊ทธ ๋’ค๋กœ ๋„ˆ๋ฌด ๋กœ์ง์„ ๋ณต์žกํ•˜๊ฒŒ ์งœ์„œ ๊ต‰์žฅํžˆ ๋”๋Ÿฌ์šด ์ฝ”๋“œ๊ฐ€ ๋˜์—ˆ๋‹ค...

๊ทธ๋Ÿฌ๋˜ ์ค‘ https://cryptosalamander.tistory.com/15 ๋ธ”๋กœ๊ทธ์— replace๋ฅผ ์ด์šฉํ•œ ํ’€์ด๋ฅผ ๋ฐœ๊ฒฌํ•ด์„œ ๊ณต์œ ํ•œ๋‹ค

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

int main()
{
    string str;
    cin >> str;
    int cnt = 0, idx;
    vector<string> croa{"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
    for (int i = 0; i < croa.size(); i++)
    {
        while (1)
        {
            idx = str.find(croa[i]);
            if (idx == string::npos)
                break;
            str.replace(idx, croa[i].length(), "#");
        }
    }
    cout << str.length();
}

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

 

2941๋ฒˆ: ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ

์˜ˆ์ „์—๋Š” ์šด์˜์ฒด์ œ์—์„œ ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ์„ ์ž…๋ ฅํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ์„ ๋ณ€๊ฒฝํ•ด์„œ ์ž…๋ ฅํ–ˆ๋‹ค. ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ ๋ณ€๊ฒฝ ฤ c= ฤ‡ c- dลพ dz= ฤ‘ d- lj lj nj nj š s= ลพ z=

www.acmicpc.net

 

๋Œ“๊ธ€