문제
https://www.acmicpc.net/problem/9996
9996번: 한국이 그리울 땐 서버에 접속하지
총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다.
www.acmicpc.net
해설
문자열의 길이를 리턴하는 .size()
특정 문자열의 위치를 리턴하는 .find()
문자열에서 원하는만큼 자르는(슬라이싱) .substr()
을 적절히 사용하여 푸는문제
파일명의 길이로 발생하는 예외를 적절히 처리해주는것이 주된 문제였음
코드
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
31
32
33
34
35
36
37
38
|
#include<bits/stdc++.h>
using namespace std;
// 정수 N, 문자열 1 / 정수개수만큼의 문자열 배열 생성
int N;
int checkpoint;
int Alen;
int exlen;
string A;
string check;
string front,back;
int main(){
//N,A 입력받기
cin >> N;
cin >> A;
Alen = A.size();
//A 별 위치 찾기
checkpoint = A.find("*");
front = A.substr(0,checkpoint);
back = A.substr(checkpoint+1 ,Alen);
//N수만큼 입력받기 앞뒤 비교하기
for (int i = 0; i < N ;i++){
cin >> check;
exlen = check.size();
//변수 제거하기
if (exlen < Alen -1) cout << "NE" <<endl;
else{
if ((front == check.substr(0,checkpoint)) && back == (check.substr(exlen-back.size()))) cout << "DA" <<endl;
else cout << "NE" << endl;
}
}
return 0;
}
|
cs |
'백준 알고리즘(C++)' 카테고리의 다른 글
백준 16200번 해커톤(C++) (0) | 2023.12.17 |
---|---|
백준 2559번 수열(C++) (2) | 2023.12.17 |
백준 11655번 ROT13(C++) (0) | 2023.12.13 |
백준 1159번 농구 경기(C++) (4) | 2023.12.06 |
백준 10988번 팬린드롬인지 확인하기(C++) (4) | 2023.12.06 |