728x90
이번 문제는 크로아티아 알파벳을 세는 것이 목표다.
처음에는 이게 왜 심화에 있나 싶었지만 역시나 여기 있는 이유가 있었다.
일단 내가 처음 짠 코드는 이렇다.
char a[101];
scanf("%s", a);
int len = strlen(a);
int cnt = 0;
for (int i = 0; i < len; i++) {
if (a[i] == '=') {
if (a[i - 1] == 'c') {
cnt++;
}
else if (a[i - 1] == 's') {
cnt++;
}
else if (a[i - 2] == 'd' && a[i - 1] == 'z') {
cnt++;
}
else if (a[i - 1] == 'z') {
cnt++;
}
}
else if (a[i] == '-') {
if (a[i - 1] == 'c') {
cnt++;
}
else if (a[i - 1] == 'd') {
cnt++;
}
}
else if (a[i] == 'j') {
if (a[i - 1] == 'l') {
cnt++;
}
if (a[i - 1] == 'n') {
cnt++;
}
}
}
printf("%d", cnt);
return 0;
}
특징이라고 할 수 있는 '=','-','j'를 기준으로 분류해서 조건에 부합할 때 하나씩 카운트가 올라간다.
이렇게 제출했으나 결과는 "틀렸습니다".....
왜 틀렸나 확인해보니. 크로아티아에는 예시로 나온 8개의 글자가 더있다는 것이다...
그러니 일반적으로 알파벳을 세고 크로아티아 알파벳이 나오면 센 걸 빼줘야한다.
그래서 바꿔서 해봤다.
#include<stdio.h>
#include<string.h>
int main() {
char a[101];
scanf("%s", a);
int len = strlen(a);
int cnt = strlen(a);
for (int i = 0; i < len; i++) {
if (a[i ]== '=') {
if (a[i - 1] == 'c') {
cnt--;
}
if (a[i - 1] == 's') {
cnt--;
}
if (a[i - 1] == 'z') {
cnt--;
if(a[i-2]=='d'){
cnt--;
}
}
}
if (a[i] == '-') {
if (a[i - 1] == 'c') {
cnt--;
}
if (a[i - 1] == 'd') {
cnt--;
}
}
if (a[i] == 'j') {
if (a[i - 1] == 'l') {
cnt--;
}
if (a[i - 1] == 'n') {
cnt--;
}
}
}
printf("%d", cnt);
return 0;
}
이렇게 하니 정답이었다.
참고로 이게 너무길다면 "||" 를 사용해도 된다.
문제가 더 문맥상 명확하면 좋겠지만 예제를 제대로 읽지 않은 내 탓도 있다.
하여튼 덜렁거리면 안된다니까
728x90
'Stone's LIFE' 카테고리의 다른 글
마음에도 먼지가 쌓인다. (1) | 2023.12.22 |
---|---|
[2023년 회고] 아마도 일생에 가장 대혼란 (1) | 2023.11.14 |
[백준3052번] 배열 안에서 다른 수 찾기 (0) | 2023.11.07 |
백준 10810번 문제: 배열의 자리는 -1이다. (0) | 2023.11.05 |
백준 2562번 문제: 시행착오로 얻은 답 (0) | 2023.11.04 |