BOJ | 2941번
Python 풀이
croatia = ["c=","c-","dz=","d-","lj","nj","s=","z="] #크로아티아 문자 리스트 생성
s = input() #단어 입력
for c in croatia:
if c in s: #c라는 문자가 크로아티아 문자리스트를 돌면서 입력한 단어 안에 있으면
s = s.replace(c,' ') #그 단어를 공백( )으로 바꾼다.
print(len(s)) #단어 길이 출력
croatia = ["c=","c-","dz=","d-","lj","nj","s=","z="] #크로아티아 문자 리스트 생성
s = input() #단어 입력
for c in croatia:
if c in s: #c라는 문자가 크로아티아 문자리스트를 돌면서 입력한 단어 안에 있으면
s = s.replace(c,' ') #그 단어를 공백( )으로 바꾼다.
print(len(s)) #단어 길이 출력
문제에서 표에 있는 크로아티아 문자들을 하나의 문자로 본다고 하였으니
replace
함수에서 길이가 1짜리인 아무 문자나 입력하면 된다. 공백도 되고 '*', '&', '^' 등등... '-'나 '='는 혹시나 변환된 후 다시 크로아티아 문자로 인식될 수도 있으니 안쓰는게 낫다.
아무튼 replace(a,b)
라는 함수는 a라는 문자열을 b로 치환한다는 뜻이다.
C++ 풀이
#include <string>
#include <iostream>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string S;
int answer = 0;
cin >> S;
for (int i = 0; i < S.size(); i++) {
if (S.substr(i, 2) == "c=" ||
S.substr(i, 2) == "c-" ||
S.substr(i, 2) == "d-" ||
S.substr(i, 2) == "lj" ||
S.substr(i, 2) == "nj" ||
S.substr(i, 2) == "s=" ||
S.substr(i, 2) == "z=") {
answer++;
S[i] = ' ';
S[i + 1] = ' ';
}
else if (S.substr(i, 2) == "dz") {
if (S[i + 2] == '=') {
answer++;
S[i] = ' ';
S[i + 1] = ' ';
S[i + 2] = ' ';
}
}
}
for (char a : S) {
if (a!=' ') answer++;
}
cout << answer;
}
#include <string>
#include <iostream>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string S;
int answer = 0;
cin >> S;
for (int i = 0; i < S.size(); i++) {
if (S.substr(i, 2) == "c=" ||
S.substr(i, 2) == "c-" ||
S.substr(i, 2) == "d-" ||
S.substr(i, 2) == "lj" ||
S.substr(i, 2) == "nj" ||
S.substr(i, 2) == "s=" ||
S.substr(i, 2) == "z=") {
answer++;
S[i] = ' ';
S[i + 1] = ' ';
}
else if (S.substr(i, 2) == "dz") {
if (S[i + 2] == '=') {
answer++;
S[i] = ' ';
S[i + 1] = ' ';
S[i + 2] = ' ';
}
}
}
for (char a : S) {
if (a!=' ') answer++;
}
cout << answer;
}
파이썬을 공부하며 백준을 다시 풀어보는데 예전에 C++17로 풀었던 코드는 진짜 못풀었다는 생각이 든다...
잡담은 다음에 하고, substr(i, num)
이라고 되어있으면 i번째 인덱스부터 시작하여 num개의 문자를 잘라서 새로운 문자열을 만들라는 함수이다.
Author And Source
이 문제에 관하여(BOJ | 2941번), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hrpp1300/BOJ-2941번저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)