algorithm

BOJ 9935

rkawk 2022. 10. 1. 15:14
๋”๋ณด๊ธฐ

๋ฌธ์ž์—ด ํญ๋ฐœ ์„ฑ๊ณต๋‹ค๊ตญ์–ด

ํ•œ๊ตญ์–ด   

 

2 ์ดˆ (์ถ”๊ฐ€ ์‹œ๊ฐ„ ์—†์Œ) 128 MB 46967 11304 7873 24.127%

๋ฌธ์ œ

์ƒ๊ทผ์ด๋Š” ๋ฌธ์ž์—ด์— ํญ๋ฐœ ๋ฌธ์ž์—ด์„ ์‹ฌ์–ด ๋†“์•˜๋‹ค. ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ํญ๋ฐœํ•˜๋ฉด ๊ทธ ๋ฌธ์ž๋Š” ๋ฌธ์ž์—ด์—์„œ ์‚ฌ๋ผ์ง€๋ฉฐ, ๋‚จ์€ ๋ฌธ์ž์—ด์€ ํ•ฉ์ณ์ง€๊ฒŒ ๋œ๋‹ค.

ํญ๋ฐœ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค.

  • ๋ฌธ์ž์—ด์ด ํญ๋ฐœ ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์—, ๋ชจ๋“  ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ํญ๋ฐœํ•˜๊ฒŒ ๋œ๋‹ค. ๋‚จ์€ ๋ฌธ์ž์—ด์„ ์ˆœ์„œ๋Œ€๋กœ ์ด์–ด ๋ถ™์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋งŒ๋“ ๋‹ค.
  • ์ƒˆ๋กœ ์ƒ๊ธด ๋ฌธ์ž์—ด์— ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ํญ๋ฐœ์€ ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ๋ฌธ์ž์—ด์— ์—†์„ ๋•Œ๊นŒ์ง€ ๊ณ„์†๋œ๋‹ค.

์ƒ๊ทผ์ด๋Š” ๋ชจ๋“  ํญ๋ฐœ์ด ๋๋‚œ ํ›„์— ์–ด๋–ค ๋ฌธ์ž์—ด์ด ๋‚จ๋Š”์ง€ ๊ตฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋‚จ์•„์žˆ๋Š” ๋ฌธ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋•Œ๋Š” "FRULA"๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

ํญ๋ฐœ ๋ฌธ์ž์—ด์€ ๊ฐ™์€ ๋ฌธ์ž๋ฅผ ๋‘ ๊ฐœ ์ด์ƒ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

๋‘˜์งธ ์ค„์— ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๊ธธ์ด๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 36๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

๋‘ ๋ฌธ์ž์—ด์€ ๋ชจ๋‘ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž์™€ ๋Œ€๋ฌธ์ž, ์ˆซ์ž 0, 1, ..., 9๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋ชจ๋“  ํญ๋ฐœ์ด ๋๋‚œ ํ›„ ๋‚จ์€ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1 ๋ณต์‚ฌ

mirkovC4nizCC44
C4

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

mirkovniz

์˜ˆ์ œ ์ž…๋ ฅ 2 ๋ณต์‚ฌ

12ab112ab2ab
12ab

์˜ˆ์ œ ์ถœ๋ ฅ 2 ๋ณต์‚ฌ

FRULAโ€‹

๋ฌธ์žฅ์ด ํญ๋ฐœํ•  ๊ฒฝ์šฐ๋Š” ๋‘๊ฐ€์ง€์ด๋‹ค.

 

case 1) mirkovC4, C4 ์™€ ๊ฐ™์ด ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด ๋‚ด์— ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ๊ทธ๋Œ€๋กœ ์žˆ๋Š” ๊ฒฝ์šฐ.

case 2) CC44 ์™€ ๊ฐ™์ด ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด ๋‚ด์— ํญ๋ฐœ ๋ฌธ์ž์—ด์„ ์ง€์›Œ๋„ ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ.

 

ํฌ๊ฒŒ ์ด ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์กฐ๊ฑด ๋ถ„๊ธฐ ํƒ์ƒ‰์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์šฐ์„  intํ˜• idx ๋ณ€์ˆ˜ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค์–ด ์ด ๋ณ€์ˆ˜๊ฐ€ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด ๋‚ด์— ์žˆ๋Š” ๋ฌธ์ž๊ฐ€ ํญ๋ฐœ๋ฌธ์ž์—ด์˜ ์ธ๋ฑ์Šค์— ์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ , ์žˆ๋‹ค๋ฉด ๋ช‡๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜์ด๋‹ค.

๋งŒ์•ฝ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด ๋‚ด์˜ ๋ฌธ์ž๊ฐ€ ํญ๋ฐœ๋ฌธ์ž์—ด[idx] ์™€ ๊ฐ™์œผ๋ฉด

intํ˜• vector์— ํ•ด๋‹น idx๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ , idx+=1๋ฅผ ํ•ด์ค€๋‹ค.

๋งŒ์•ฝ ์ด๋ ‡๊ฒŒ ๋„ฃ์€ idx ๊ฐ€ bomb.size()-1๊ณผ ๊ฐ™์œผ๋ฉด, ๊ทธ๋งŒํผ vector์™€ ans string์—์„œ ๋นผ์ฃผ๋ฉด ๋œ๋‹ค.

 

์ค‘์š”ํ•œ ํฌ์ธํŠธ๋Š” 

1. ๋งŒ์•ฝ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด ๋‚ด์˜ ๋ฌธ์ž๊ฐ€ ํญ๋ฐœ๋ฌธ์ž์—ด[idx]์™€ ๋‹ค๋ฅด๋‹ค๋ฉด, ์ด ๋ฌธ์ž๋Š” ํญ๋ฐœ๋ฌธ์ž์—ด[0] ์ด ์•„๋‹ ๊ฒฝ์šฐ์— ์ด ๋ฌธ์ž ์ด์ „์— ๋‚˜์˜จ ๋ฌธ์ž๋“ค์€ ์ ˆ๋Œ€ ํญํŒ”ํ•  ์ˆ˜ ์—†๋‹ค.

 

2. ํ’€์ด์˜ ์šฉ์ด๋ฅผ ์œ„ํ•ด 1.์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๊ฐ€ ๋‚˜์˜ฌ ๊ฒฝ์šฐ vector์— -1๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

 

 

#include <iostream>
#include <string>
#include <vector>
using namespace std;
string s, bomb, ans;
vector<int>index;
int main(){
    cin>>s>>bomb;
    int idx = 0;
    for(auto c : s){
        if(c == bomb[idx]){
            index.push_back((idx));
            ans.push_back(c);
            idx += 1;
            if(index.back() == bomb.size()-1){
                for(int i=0; i<bomb.size(); i++){
                    index.pop_back();
                    ans.pop_back();
                }
                if(index.empty()){
                    idx = 0;
                }else{
                    idx = index[index.size()-1]+1;
                }
            }
        }else{
            if(c == bomb[0]){
                index.push_back(0);
                ans.push_back(c);
                idx = 1;
            }else{
                idx = 0;
                ans.push_back(c);
                index.push_back(-1);
            }
        }
    }
    if(ans.empty())
        cout<<"FRULA";
    else
        cout<<ans;
}

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

BOJ 14500  (0) 2022.10.01
BOJ 1629  (0) 2022.10.01
BOJ 10830  (1) 2022.10.01
BOJ 13172  (0) 2022.09.29
BOJ 1932  (0) 2022.09.28