Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 1로만들기2
- 26008
- 브루트포스
- BOJ
- 15662
- 14863
- 동적프로그래밍
- 삼성
- 1781
- 재귀
- dart
- 4811
- 그리디
- Python
- 서울에서경산까지
- 해시해킹
- C++
- 백준
- DP
- BOJ14889
- D1
- 회전하는큐
- Flutter
- 재귀함수
- 15353
- Crossfit
- sw expert academy
- spring boot
- 크로스핏
- 스택
Archives
- Today
- Total
곧죽어도 콛잉
[구현 / BOJ 9996 / C++] 한국이 그리울 땐 서버에 접속하자 본문
https://www.acmicpc.net/problem/9996
문제가 길어서 대충 풀다가 ab*ab*ab 같은 경우가 있다고 착각할 수 있다...
별이 하나만 있다는 것에 주의하며 풀어보자!
1) 별을 기준으로 suf와 pre로 나누어 각각을 구한다.
2) pre + suf 가 주어진 fileName 보다 크면 NE를 출력한다. (반례 때문에, ab*ab인 경우 ab가 DA로 나올 수 있음)
3) pre와 suf를 fileName size를 통해서 fileName에서 구한다!!
핵심이 되는 함수는 find, substr, size 이다!!!
#include <bits/stdc++.h>
using namespace std;
int N;
string patt, fileName, pre, suf;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> N;
cin >> patt;
int pos = patt.find("*");
pre = patt.substr(0, pos);
suf = patt.substr(pos+1);
while(N--){
cin >> fileName;
if(pre.size()+suf.size() > fileName.size()) cout << "NE\n";
else if((pre==fileName.substr(0, pre.size())) && (suf==fileName.substr(fileName.size() - suf.size()))) cout <<"DA\n";
else cout << "NE\n";
}
}
'Coding Test > C++' 카테고리의 다른 글
[구현 / BOJ 2559 / C++] 수열 (0) | 2023.02.07 |
---|---|
[구현 / BOJ 9375 / C++] 패션왕 신해빈 (0) | 2023.02.07 |
[SW Expert Academy / D1] 2063 중간값 찾기 (0) | 2023.01.05 |
[SW Expert Academy / D1] 2071 평균값 구하기 (0) | 2023.01.05 |
[SW Expert Academy / D1] 2072 홀수만 더하기 (0) | 2023.01.05 |
Comments