이번엔 백준 알고리즘 5단계 문자열을 풀어볼려구한다!
char : 문자형 변수 (정수를 입력하면 ascll코드로 인식)
char s = 65; cout << s; // A (ASCII 에서 65는 A)
s = 'a'; cout << s; // a
s = '1'; cout << s; // 1
string : 문자를 담을 수 있는 클래스
[인덱스] : 인덱스의 문자 (char)
front() : 맨 앞 문자
back() : 맨 뒷 문자
size() : 문자열 길이
length() : 문자열 길이
empty() : 문자열 공백 체크
swap(a,b) : 문자열 a,b 를 교체
clear() : 문자열 비움
a.append(b) : a 뒤에 b 추가
a.find(b) : a에서 b 인덱스
substr(인덱스,길이) : 일부 반환 (string)
begin() : 문자열 시작 인덱스
end() : 문자열 끝 인덱스
replace(인덱스, 길이, 문자열) : 인덱스부터 길이만큰 문자열로 변경
string::npos : 존재 여부 체크
입출력을 풀때 문자열+정수가 안되는거에 대해 당황했었는데
문자열끼리는 +를 사용해서 합칠 수 있다고 한다
인덱스 번호는 0부터 시작되므로 찾고자하는 인덱스에서 -1을 한다
#include <iostream>
using namespace std;
int main()
{
string S;
int i;
cin >> S >> i;
cout << S.substr(i-1,1);
}
hello 2
e
#include <iostream>
using namespace std;
int main()
{
string s;
cin >> s;
cout << s.size();
}
pulljima
8
문자열을 다 받고 연속해서 출력을 해야하는 문제
for문으로 T만큼 받아서 리스트에 저장한 후
front(), back()을 이용해서 출력을 하려고 해봤는데 정상적으로 출력이 되지 않았다
#include <iostream>
using namespace std;
int main()
{
int T;
cin >> T;
string* s = new string[T];
for (int i = 0; i < T; i++)
{
cin >> s[i];
}
for (int i = 0; i < T; i++)
{
cout << s[i].front() + s[i].back() + "\n";
}
}
3
abc
ppp
lll
i s
cin으로 바로 리스트에 넣는 건 안되는 것 같아서
따로 문자열을 받아서 첫번째와 마지막을 리스트에 넣고
마지막에 리스트를 반환하려고 했는데 이것두 안된다
#include <iostream>
using namespace std;
int main()
{
int T;
cin >> T;
string* s = new string[T];
for (int i = 0; i < T; i++)
{
string ns;
cin >> ns;
s[i] = ns.front() + ns.back();
}
for (int i = 0; i < T; i++)
{
cout << s[i] + "\n";
}
}
3
abc
ppp
lll
?
?
?
front() + back()으로 저장은 안되는데
front()
+= back() 으로 시도하니깐 정상적으로 출력이 되었다
#include <iostream>
using namespace std;
int main()
{
int T;
cin >> T;
string* s = new string [T];
for (int i = 0; i < T; i++)
{
string ns;
cin >> ns;
s[i] = ns.front();
s[i] += ns.back();
}
for (int i = 0; i < T; i++)
{
cout << s[i]+"\n";
}
}
3
abc
o
aaa
ac
oo
aa
#include <iostream>
using namespace std;
int main()
{
char s;
cin >> s;
cout << int(s);
}
A
65
stoi / stof / stol / stod
문자열을 int, float, long, double로 변경
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cin >> s;
cout << stoi(s);
}
123
123
#include <iostream>
#include <string>
using namespace std;
int main()
{
int N;
cin >> N;
string s;
cin >> s;
int sum = 0;
for (int i = 0; i < N; i++)
{
sum += stoi(s.substr(i,1));
}
cout << sum;
}
4
4444
16
c++ 문자열 체크✔ 10809번 알파벳 찾기
#include <iostream>
using namespace std;
int main()
{
string S;
cin >> S;
for (int i = 0; i < 26; i++)
{
char c = i + 97;
int idx = -1;
if (S.find(c)!= string::npos)
idx = S.find(c);
cout << idx << " ";
}
}
beakjoon
2 0 -1 -1 1 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
#include <iostream>
#include <list>
using namespace std;
int main()
{
int T;
cin >> T;
list<string> slist;
for (int i = 0; i < T; i++)
{
int R;
string S;
cin >> R >> S;
string P;
for (int j = 0; j < S.size(); j++)
{
for (int k = 0; k < R; k++)
{
P += S[j];
}
}
slist.push_back(P);
}
int size = slist.size();
for (int i = 0; i < size; i++)
{
cout << slist.front() << "\n";
slist.pop_front();
}
}
2
3 abc
2 o
aaabbbccc
oo
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string S, nS;
getline(cin, S);
stringstream sS(S);
int c = 0;
while(getline(sS, nS, ' '))
{
if (!nS.empty())
{
c++;
}
}
cout << c;
}
na na na
3
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1, s2, ns1, ns2;
cin >> s1 >> s2;
for (int i = 0; i < s1.size(); i++)
{
ns1 += s1[s1.size() - i-1];
}
for (int i = 0; i < s2.size(); i++)
{
ns2 += s2[s2.size() - i-1];
}
string ns = (ns1 > ns2) ? ns1 : ns2;
int a = stoi(ns);
cout << a;
}
123 987
789
이미지에 있는 다이얼에서
2: ABC 3: DEF 4: GHI 이렇게 숫자 하단에 표시되어있다
입력 받은 문자를 숫자에 체크해야한다
#include <iostream>
using namespace std;
int main()
{
string s;
cin >> s;
int sum = 0;
for (int i = 0; i < s.size(); i++)
{
switch (s[i])
{
case 'A':
case 'B':
case 'C':
sum += 3;
break;
case 'D':
case 'E':
case 'F':
sum += 4;
break;
case 'G':
case 'H':
case 'I':
sum += 5;
break;
case 'J':
case 'K':
case 'L':
sum += 6;
break;
case 'M':
case 'N':
case 'O':
sum += 7;
break;
case 'P':
case 'Q':
case 'R':
case 'S':
sum += 8;
break;
case 'T':
case 'U':
case 'V':
sum += 9;
break;
case 'W':
case 'X':
case 'Y':
case 'Z':
sum += 10;
break;
}
}
cout << sum;
}
UNUCIC
36
#include <iostream>
#include <string>
#include <list>
using namespace std;
int main()
{
list<string> slist;
string s;
while (!cin.eof())
{
getline(cin, s);
slist.push_back(s);
}
int size = slist.size();
for (int i = 0; i < size; i++)
{
cout << slist.front() << "\n";
slist.pop_front();
}
}