https://www.acmicpc.net/problem/5555
5555번: 반지
당신은 N개의 반지를 가지고 있다. 각각의 반지는 대문자 10 문자로 이루어진 문자열이 새겨져 있다. 반지는 문자열의 시작과 끝이 연결된 형태로 문자가 새겨져 있다. 반지에 각인된 문자열을
www.acmicpc.net
c++로 백준 5555번 문제를 풀어보겠다.
문제
당신은 N개의 반지를 가지고 있다. 각각의 반지는 대문자 10 문자로 이루어진 문자열이 새겨져 있다. 반지는 문자열의 시작과 끝이 연결된 형태로 문자가 새겨져 있다. 반지에 각인된 문자열을 거꾸로 읽는 걱정은 없다.
찾고자하는 문자열이 주어졌을 때 그 문자열을 포함하는 반지가 몇 개인지를 발견하는 프로그램을 작성하라.
입력
입력은 총 2 + N 줄 이다.
첫 번째 줄에는 1 자 이상 10 자 이하의 대문자로 구성된 찾고자 하는 문자열이 적혀있다.
두 번째 줄에는 반지의 개수 N (1 ≦ N ≦ 100)이 적혀있다.
2+i 줄(1 ≦ i ≦ N)엔 i개의 반지에 새겨져있고, 10 문자로 이루어진 문자열이 적혀있다.
출력
찾고자하는 문자열을 포함 반지의 개수를 나타내는 정수를 한 줄로 출력하라.
예제 입력 1 복사
ABCD
3
ABCDXXXXXX
YYYYABCDXX
DCBAZZZZZZ
예제 출력 1 복사
2
<문제 풀이>
처음에 작성한 코드는 다음과 같다.

백준 사이트에서는 '시간 초과'라고 떴다. 시간복잡도를 해결하기 위해서는 vector을 사용해야 했었는데 아직 vector에 대해 배우지 않아 자료구조 시간에 배우고 다시 풀어볼 예정이다.
'C++' 카테고리의 다른 글
[백준 알고리즘] 10769번 : 행복한지 슬픈지, c++ (0) | 2022.03.12 |
---|---|
[백준 알고리즘] 11948번 : 과목선택, c++ (0) | 2022.03.11 |
[백준 알고리즘] 4564번 : 숫자 카드놀이, c++ (0) | 2022.03.10 |
[백준 알고리즘] 3047번 : ABC, c++ (0) | 2022.03.10 |
[백준 알고리즘] 6996번 : 애너그램, c++ (0) | 2022.03.09 |