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

[๋ฐฑ์ค€] ํ•œ๊ตญ์ด ๊ทธ๋ฆฌ์šธ ๋• ์„œ๋ฒ„์— ์ ‘์†ํ•˜์ง€(9996), C++

by candosh 2024. 11. 12.

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

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

 

โœ๐Ÿป ๋ฌธ์ œ ์„ค๋ช…

๐Ÿ’๐Ÿป‍โ™€๏ธ ๋‚ด ํ’€์ด

*ํŒจํ„ด ํ•ด์„ ์ฃผ์˜

์ด ๋ฌธ์ œ๋Š” ๋†“์น  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค. ๋ฐ”๋กœ ํŒจํ„ด์ด๋‹ค. ๋ฌธ์ œ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด 'a*d' , 'h*n'์ด๋Ÿฌํ•œ ํ˜•์‹์ด๋‹ค. ๊ทธ๋ž˜์„œ *์•ž๋’ค๋กœ ๋ฌธ์ž 1๊ฐœ๋งŒ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ฐฉ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ์ ์„ ์ฃผ์˜ํ•˜์ž! (์ œ๊ฐ€ ์ฐฉ๊ฐํ–ˆ์–ด์š” ใ…Žใ…Ž)

 

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

 

๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ ํ’€์ด์˜ ํ‚ค๋ฅผ *์—์„œ ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹ค. * ๊ธฐ์ค€์œผ๋กœ ์•ž๊ณผ ๋’ค์˜ ๋ฌธ์ž์—ด์„ ์ž˜๋ผ์„œ ๋น„๊ต๋ฅผ ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ž๋ฅด๋Š” ๊ฒƒ์€ C++์˜ substr() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ž.

 

substr() ํ•จ์ˆ˜

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

int main() {
    string str = "Hello, World!";
    
    // substr(์‹œ์ž‘ ์œ„์น˜, ๊ธธ์ด)
    string sub1 = str.substr(0, 5);  // "Hello"
    string sub2 = str.substr(7, 5);  // "World"
 
    return 0;
}

 

 

substr ์˜ˆ์‹œ ๊ทธ๋ฆผ

 

์ธ๋ฑ์Šค 0~4๊นŒ์ง€ ์ค‘ ์•ž์˜ 'ab'๋Š” 0๋ถ€ํ„ฐ ๊ธธ์ด 2, *๊ธฐ์ค€ ๋’ค์˜ 'ab'๋Š” 3๋ถ€ํ„ฐ ๊ธธ์ด 2์ด๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์‹œ์ž‘ ์œ„์น˜๋งŒ ์“ฐ๊ณ  ๊ธธ์ด๋ฅผ ์ƒ๋žตํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—ด๊นŒ์ง€ ๊ฐ„๋‹ค.

 

์ž‘์€ ํŒจํ„ด์€ ๋ฏธ๋ฆฌ ์ œ๊ฑฐ

๋งˆ์ง€๋ง‰์œผ๋กœ ์ฃผ์˜ํ•  ์ ์€ ํŒจํ„ด์˜ ์•ž ๋ฌธ์ž์—ด ๋’ท ๋ฌธ์ž์—ด์„ ํ•ฉํ•œ ๊ฒƒ๋ณด๋‹ค ์ž‘์€ ํŒจํ„ด์€ ๋ฏธ๋ฆฌ ์ œ์™ธํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๋ฅผ ๋ฏธ๋ฆฌ ์ œ์™ธํ•˜์ง€ ์•Š์œผ๋ฉด substr์ด ์ž˜๋ชป๋œ ํ˜ธ์ถœ์„ํ•ด์„œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๋‹ค. (substr ํ•จ์ˆ˜๋Š” ์ฃผ์–ด์ง„ ์‹œ์ž‘ ์ธ๋ฑ์Šค๊ฐ€ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ์—๋Ÿฌ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.)

 

์•„๋ž˜ ์ฝ”๋“œ์— ํ•ด๋‹นํ•˜๋Š” ์„ค๋ช…์ธ๋ฐ, ์ด๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋น„๊ตํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์ž‘์„ฑํ•ด์„œ ์ œ์ถœํ•˜๋ฉด ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

if (pre.size() + suf.size() > tmp.size())
    {
        cout << "NE" << "\n";
    }

 

 

๐Ÿค– ์ฝ”๋“œ

#include <iostream>
using namespace std;

int main()
{
	int n, star;
	string str, pre, suf;

	cin >> n >> str;

	star = str.find('*');
	pre = str.substr(0, star);
	suf = str.substr(star + 1);

	for (int i = 0; i < n; i++)
	{
		string tmp;
		cin >> tmp;
		
		if (pre.size() + suf.size() > tmp.size())
		{
			cout << "NE" << "\n";
		}

		else
		{
			if (tmp.substr(0, pre.size()) == pre && tmp.substr(tmp.size() - suf.size()) == suf)
			{
				cout << "DA" << "\n";
			}
			else
				cout << "NE" << "\n";
		}
	}

	return 0;
}