[백준] 9966 한국이 그리울 땐 서버에 접속하지

0

백준

목록 보기
215/271
post-thumbnail
post-custom-banner

[백준] 9966 한국이 그리울 땐 서버에 접속하지

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

  • 패턴은 알파벳 소문자와 별표(아스키값 42) 한 개로 이루어져 있다.
    문자열의 길이는 100을 넘지 않으며, 별표는 문자열의 시작과 끝에 있지 않다.
    -> 별표를 기준으로 접두사와 접미사를 구하기

  • 유의할 테스트케이스

1
a*d
a

C++ 풀이

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

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);

	int N;
	cin >> N;

	string pattern;
	cin >> pattern;

	string prefix, suffix;
	for (int i = 0; i < pattern.length(); ++i) {
		if (pattern[i] == '*') {
			prefix = pattern.substr(0, i);
			suffix = pattern.substr(i+1);
		}
	}

	for (int i = 0; i < N; ++i) {
		string input;
		cin >> input;

		if (input.length() < prefix.length() + suffix.length()) {
			cout << "NE\n";
			continue;
		}

		bool flag = true;
		if (input.substr(0, prefix.length()) != prefix) {
			flag = false;
		}
		else if (input.substr(input.length() - suffix.length()) != suffix) {
			flag = false;
		}

		if (flag) cout << "DA\n";
		else cout << "NE\n";
	}

	return 0;
}

Python 풀이

N = int(input())
pattern = input()

substrings = pattern.split('*')
prefix = substrings[0]
suffix = substrings[1]

for i in range(0, N):
  inputStr = input()
  if(len(inputStr) < len(prefix) + len(suffix)):
    print("NE")
    continue

  flag = True
  if(inputStr[0:len(prefix)] != prefix):
    flag = False
  if(inputStr[-len(suffix):] != suffix):
    flag = False

  if(flag):
    print("DA")
  else:
    print("NE") 

profile
Be able to be vulnerable, in search of truth
post-custom-banner

0개의 댓글