algorithm

BOJ 24524

rkawk 2022. 10. 5. 22:34
๋”๋ณด๊ธฐ

์•„๋ฆ„๋‹ค์šด ๋ฌธ์ž์—ด ์„ฑ๊ณต

 
1 ์ดˆ 1024 MB 667 244 193 42.605%

๋ฌธ์ œ

๋‹น์‹ ์€ ๋ฌธ์ž์—ด S๋ฅผ ์„ ๋ฌผ ๋ฐ›์•˜๋‹ค. ํ•˜์ง€๋งŒ ๋‹น์‹ ์€ ์˜ค์ง ๋ฌธ์ž์—ด T๋งŒ์„ ์•„๋ฆ„๋‹ต๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์˜์ง€ ์•Š๋‹ค. ๋‹น์‹ ์€ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๋ฌธ์ž๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ์งˆ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, T ์—ญ์‹œ ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค.

๊ทธ๋Ÿฌ๋˜ ๋‹น์‹ ์—๊ฒŒ ์ข‹์€ ์ƒ๊ฐ์ด ๋– ์˜ฌ๋ž๋‹ค. ๋ฐ”๋กœ S์˜ ๋ฌธ์ž๋“ค์„ ๊ณจ๋ผ๋‚ด์„œ T๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค! ๋‹น์‹ ์€ S์—์„œ ๋ฌธ์ž๋“ค์„ ๊ณจ๋ผ๋‚ด์„œ Sโ€Š์—์„œ์˜ ์ˆœ์„œ๋Œ€๋กœ ์ด์–ด ๋ถ™์—ฌ ์ƒˆ ๋ฌธ์ž์—ด์„ ๋งŒ๋“œ๋Š” ์‹œํ–‰์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ S์˜ ๊ฐ ๋ฌธ์ž๋Š” ์ตœ๋Œ€ ํ•œ ๋ฒˆ์”ฉ ๊ณจ๋ผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, S๊ฐ€ "aabb"์ด๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž "a"์™€ ์„ธ ๋ฒˆ์งธ ๋ฌธ์ž "b"๋ฅผ ๊ณจ๋ผ ๋ฌธ์ž์—ด "ab"๋ฅผ ๋งŒ๋“ค๊ณ , ๋‹ค์‹œ ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž "a"์™€ ๋„ค ๋ฒˆ์งธ ๋ฌธ์ž "b"๋ฅผ ๊ณจ๋ผ ๋ฌธ์ž์—ด "ab"๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋‹น์‹ ์€ T๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์ด ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค. ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” T์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด๋ณด์ž.

์ž…๋ ฅ

์ฒซ์งธ ์ค„๊ณผ ๋‘˜์งธ ์ค„์— ์˜์–ด ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด S์™€ T๊ฐ€ ๊ฐ๊ฐ ์ฃผ์–ด์ง„๋‹ค. (1≤|S|≤106, 1≤|T|≤26, |T|≤|S|, |S|์™€ |T|๋Š” ๊ฐ๊ฐ S์˜ ๊ธธ์ด์™€ T์˜ ๊ธธ์ด๋ฅผ ์˜๋ฏธํ•œ๋‹ค.)

โ€ŠT์˜ ๋ชจ๋“  ๋ฌธ์ž๋Š” ์„œ๋กœ ๋‹ค๋ฅด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด T์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

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

aabb
ab

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

2

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

aabb
ba

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

0

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

abba
ab

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

1โ€‹

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

N์ด 1000000, M์ด 26์ด๋ฏ€๋กœ NM์€ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.

M์˜ ์›์†Œ๊ฐ€ ๊ทœ์น™์— ๋”ฐ๋ผ ๋‚˜์˜จ ํšŸ์ˆ˜๋ฅผ intํ˜• ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ , N์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์ด๋ฅผ ๊ทœ์น™์— ๋”ฐ๋ผ ์‹œํ–‰ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๊ทœ์น™์€ ์–ด์ฒ˜ํ”ผ M์˜ ์›์†Œ๋“ค์€ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์™€์•ผ ํ•˜๋ฏ€๋กœ, ๋’ค์˜ ์›์†Œ๊ฐ€ ์•ž์— ์›์†Œ๋ณด๋‹ค ๋จผ์ € ๋‚˜์™€์žˆ์œผ๋ฉด ์ด๋Š” ์“ธ๋ชจ๊ฐ€ ์—†์–ด์ง„๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์•ž์—์žˆ๋Š” ์›์†Œ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ˆ˜๋ฅผ ์„ธ๊ณ , ๋งŒ์•ฝ ์•ž์—์žˆ๋Š” ์›์†Œ๊ฐ€ ์—†๋‹ค๋ฉด continue, ์•„๋‹ˆ๋ผ๋ฉด ์•ž์˜ ์›์†Œ๋ฅผ -1ํ•ด์ฃผ๊ณ  ๋’ค์˜ ์›์†Œ๋ฅผ +1 ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

#include <iostream>
#include <string>
using namespace std;
string s1, s2;
int idx = 0, s2arr[26];
int main(){
    cin>>s1>>s2;
    for(auto c : s1){
        for(int i=0; i<s2.size(); i++){
            if(s2[i] == c){
                if(i == 0)
                    s2arr[i] += 1;
                else if(s2arr[i-1]){
                    s2arr[i-1] -= 1;
                    s2arr[i] += 1;
                }
            }
        }
    }
    cout<<s2arr[s2.size()-1];
}

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

BOJ 14502  (0) 2022.10.07
BOJ 9252  (1) 2022.10.05
BOJ 21610  (1) 2022.10.04
BOJ 10942  (1) 2022.10.03
BOJ 11758(CCW)  (1) 2022.10.03