반응형
728x170
역시나 그렇게 어렵지 않은 문제다.
https://www.acmicpc.net/problem/2684
다만 문자열 계산할 때
내가 짚고 넘어가야 할 부분이 있었다.
#맞는 풀이
#include<iostream>
#include<algorithm>
using namespace std;
int n;
string target[8] = { "TTT","TTH","THT","THH","HTT","HTH","HHT","HHH" };
int num[8];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
while (n--) {
string test;
cin >> test;
for (int i = 0; i < 38; i++) {
string s;
s = s + test[i] + test[i+1] + test[i+2]; // 중요
for (int j = 0; j < 8; j++) {
if (target[j] == s) {
num[j]++;
}
}
}
for (int i = 0; i < 8; i++) {
cout << num[i] << " ";
}
cout << "\n";
fill(num, num + 8, 0);
}
}
저기 중요부분 써놓은데 있다.
1) s = s + test[i] + test[i+1] + test[i+2];
2) s = test[i] + test[i+1] + test[i+2];
1과 2 결과가 같을까?
우선 의도한 대로 작동하려면 1번처럼 써야 한다.
또는 append를 쓰거나.
2번의 작동 메커니즘은 어떻냐?
바로 아스키코드로 바꿔서 계산한 뒤 s에 아스키코드가 가리키는 문자를 할당한다.
즉, 정수계산이 되어버린다는 말이다.
유념하고 문자열 계산하자.
728x90
반응형
그리드형
'문제풀이(Problem Solving)' 카테고리의 다른 글
백준, BOJ, 2156번 C++ [CPP] (1) | 2021.06.05 |
---|---|
백준, BOJ, 1912번 C++ [CPP] (0) | 2021.06.03 |
백준, BOJ, 1793번 C++ [CPP] (0) | 2021.05.30 |
주어진 좌표에서 가장 가까운 값 추출하기 - C#, Unity (0) | 2021.05.30 |
백준, BOJ, 2108번 C++ [CPP] (0) | 2021.05.27 |