728x90
반응형
문제 풀기 전 생각 :
/*
먼저 크로아티아 알파벳인지 아닌지 판별하는 함수를 만든다.
문자열로 입력받은후 두 글자씩 위의 함수에 넣는다.
만약 크로아티아 알파벳 이라면 카운트를 1 증가하고 다음 글자를 패스한다.
예외로 dz= 는 세글자 이기 때문에 dz=일 경우 다음 두 글자를 패스한다.
만약 크로아티아 알파벳이 아니라면 그냥 카운트만 1 증가시킨다.
마지막에 카운트를 출력한다.
*/
#include <iostream>
#include <string>
using namespace std;
int iscroi(string s){
string croi[8] = {"c=","c-","dz","d-","lj","nj","s=","z="};
for(int i=0 ; i<8 ; i++){
if(s == croi[i]){
if(s == "dz") return 2;
else return 1;
}
}
return 0;
}
int main() {
int count = 0;
string s;
cin >> s;
for(int i=0 ; i<s.length() ; i++){
if(iscroi(s.substr(i,2)) > 0 ){
if(iscroi(s.substr(i,2)) == 1) i++;
else if(s[i+2] == '=') i+=2;
}
count++;
}
cout << count;
return 0;
}
https://www.acmicpc.net/problem/2941
풀 때 어려웠던 점 또는 느낀점 :
어려웠던 점은 없었던것 같고.
크로아티아 알파벳은 나랑 맞지 않다는 사실을 알 수 있었다.
개선방안 :
#include <stdio.h>
#include <string.h>
int main(void) {
int i,sum=0;
char S[100];
scanf("%s",S);
sum=strlen(S);
for(i=0;i<strlen(S);i++){
if((S[i]=='l'||S[i]=='n')&&S[i+1]=='j')
sum--;
else if(S[i]=='d'&&S[i+1]=='z'&&S[i+2]=='=')
sum--;
else if(S[i]=='='||S[i]=='-')
sum--;
}
printf("%d",sum);
}
위의 코드는 입력받은 글자수를 저장해놓고
크로아티아 알파벳을 만날때마다 글자수를 1씩 감소시켰다.
그리고 조건문이나 과정이 간편하게 짠 코드인것 같다.
728x90
반응형
'Problem Solving' 카테고리의 다른 글
[C++] [프로그래머스] 방문 길이 (0) | 2021.07.25 |
---|---|
[C++] [프로그래머스] 약수의 개수와 덧셈 (0) | 2021.07.25 |
[C++] [LeetCode 125] Valid Palindrome (pps 5-6) (0) | 2021.07.22 |
[C++] [LeetCode 412] Fizz Buzz (pps 5-5) (0) | 2021.07.22 |
[C++] [LeetCode 1154] Day of the Year (pps 5-4) (0) | 2021.07.18 |
댓글