문제
짝수 길이의 0과 1로 이루어진 문자열이 주어질 때, 가운데 두 문자가 같으면 "Do-it", 다르면 "Do-it-Not"을 출력하라.
입력
테스트 케이스 수 N, 각 케이스마다 짝수 길이의 0/1 문자열이 주어진다.
출력
각 문자열에 대해 가운데 두 문자가 같으면 "Do-it", 다르면 "Do-it-Not"을 출력한다.
예제
| 입력 | 출력 |
|---|---|
2 0000 0010 | Do-it Do-it-Not |
풀이
문자열의 가운데 두 문자 인덱스를 계산하여 비교한다.
- 문자열 길이의 절반
s = size/2를 구한다 s[s-1]과s[s]위치의 문자를 비교한다- 같으면 "Do-it", 다르면 "Do-it-Not"을 출력한다
핵심 아이디어: 짝수 길이 문자열의 가운데 두 문자는 인덱스 len/2-1과 len/2에 위치한다.
코드
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
string s1;
for (int i = 0; i < n; i++)
{
cin >> s1;
int s = s1.size() / 2;
cout << "Do-it";
if (s1[s - 1] != s1[s])
cout << "-Not";
cout << '\n';
}
}복잡도
- 시간: O(N)
- 공간: O(L) (L: 문자열 길이)