반응형
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string board[5];
bool compare(char a, char b) {
if (a == '*' && b == '_') return true;
if (a == '_' && b == '*') return false;
if (a == '*') return true;
return false;
}
int main() {
for (int i = 0;i < 5;i++) {
cin >> board[i];
}
//first board[i][0] find '#'
for (int i = 0; i < 5;i++) {
int end = board[i].length();
sort(&board[i][0], &board[i][end], compare);
//cout << board[i];
int start = 0;
if (board[i][0] == '_') {
cout << 0 << endl;
}
else if (board[i][end - 1] == '*') {
cout << end << endl;
}
else {
while (1) {
int mid = (start + end) / 2;
if (board[i][mid] == '*' && board[i][mid + 1] == '_') {
cout << mid + 1 << endl;
break;
}
else if (board[i][mid] == '*') {
start = mid + 1;
}
else {
end = mid - 1;
}
}
}
}
}
입력 예제
__*_______________
______***_______
__**********__________
****________
******
출력 결과
1 3 10 4 6
원래 인덱스 찾아서 하는게 이상적인데
정렬되어 있지 않은 데이터에서 어떻게 binary search쓰는지 감이 안와서
어차피 길이 찾는 문제니까 compare함수 써서 정렬함
ㅋㅋㅋㅋㅋㅋ
sort()쓰면
*_________
*****___
이런식이 돼서
그냥 right인덱스만 찾으면 됨 ><
반응형
'C언어 > 문제풀다 하나씩' 카테고리의 다른 글
가장 큰 숫자 작은 숫자 찾기. 비효율적임 (0) | 2020.05.27 |
---|---|
중복 순열 문제 (0) | 2020.05.27 |
오랜만에 간단한 순열 문제 (0) | 2020.05.27 |
흠 start = mid는 에러나는 군 (0) | 2020.05.23 |
이중배열에서 binary search 해보기 (0) | 2020.05.23 |
binary search 구현2 서재에서 책 찾기 (0) | 2020.05.23 |
binary search 구현 (0) | 2020.05.23 |
Binary Search Tree 구현해보기 search함수 (0) | 2020.05.22 |