※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 26041번 문제인 비슷한 전화번호 표시이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/26041
26041번: 비슷한 전화번호 표시
n개의 전화번호가 공백으로 구분된 문자열 A가 주어진다. 문자열 A에는 중복된 전화번호가 존재할 수 있다. 추가로, 하나의 전화번호 B가 주어진다. 전화번호는 문자 ‘1’ ~ 문자 ‘9’로 이루어
www.acmicpc.net
A에 주어지는 번호들 중 접두사로 B를 포함하면서 B보다 긴 전화번호의 개수를 세는 문제이다.
while문과 cin을 이용해 A로 주어지는 번호의 개수를 몰라도 입력을 편하게 받을 수 있다. 이 때, 마지막으로 입력받은 문자열을 B로 취급하자.
또한, substr을 이용해 A의 접두사와 B의 비교를 간편하게 구현할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
string s; int slen;
vector<string> vec;
int ans = 0;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
while (cin >> s) vec.emplace_back(s);
vec.pop_back();
slen = s.length();
for (auto& cur : vec) {
if (cur.length() > s.length() && cur.substr(0, slen) == s) ans++;
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 11520 // C++] And Then There Was 5 (0) | 2022.11.26 |
---|---|
[BOJ 25758 // C++] 유전자 조합 (0) | 2022.11.26 |
[BOJ 13225 // C++] Divisors (0) | 2022.11.25 |
[BOJ 25757 // C++] 임스와 함께하는 미니게임 (0) | 2022.11.25 |
[BOJ 13222 // C++] Matches (0) | 2022.11.25 |