https://www.acmicpc.net/problem/1032
문제 자체는 한명령을 기준으로 잡고 나머지명령과 비교해서 마지막까지 동일한 갯수만 카운트 하였다
#include <iostream>
#include <string.h>
using namespace std;
char filename[51][51];
bool check[51];
int main()
{
int N;
cin >> N;
for (int i = 0; i < N; i++)
cin >> filename[i];
for (int i = 0; i < 51; i++)
check[i] = true;
for (int i = 0; i < strlen(filename[0]); i++)
{
char c = filename[0][i];
int j;
for (j = 1; j < N; j++)
if (filename[j][i] != c)
break;
//for문이 다 돌지 못했으면
if (j != N)
check[i] = false;
}
for (int i = 0; i < strlen(filename[0]); i++)
{
if (check[i] == true)
cout << filename[0][i];
else
cout << "?";
}cout << endl;
}
C++ String 활용
http://www.cplusplus.com/reference/string/string/
string str = "str";
str.assign("str"); //멤버 함수 사용한 할당
string str = new string("str"); //동적 할당
//타입 변환
int i = 10;
string s = std::to_string(i);
string s = "123"
int i = std::stoi(s);
str.size();
str.length(); //길이 (공백포함)
str.empty()
str.clear()
//index
str[0];
str.at(0); str.front(); str.back();
str.substr(5,7); //5~7까지 추출
// '==' '<' 등을 이용한 비교 가능 (아스키 코드 기준)
str.compare(str2);
//str에 str2 0~5 붙이기
str.append(str2, 0, 5)
str.find(stf2) //str2찾아서 index반환
//반복자 활용
string::iterator it;
for(it = str.begin(); it < str.end(); it++){
cout << *it;
}cout << endl;
str.erase();
str.erase(0,4);
//a에서 b까지 C라는 문자열로
str.replace(a, b, "c");
//c_str()으로 변환
fs.open(str.c_str());
char *strAry = new char[str.length() + 1];
strcpy(strAry , str.c_str());
//char* 함수
strcmp(str1, str2);
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 트리 - 복습 (0) | 2021.02.05 |
---|---|
[백준] 친구 - 복습(플루이드-와샬) (0) | 2021.02.05 |
[백준] 고층건물 - 복습(hard) (0) | 2021.02.04 |
[백준] 보물 - 복습 (0) | 2021.02.04 |
[백준] 수열의 합 - 복습 (0) | 2021.01.31 |
댓글