티스토리 뷰
#include <stdio.h>
#include <string.h>
int main(void) {
int n,c=0,e=0,i,h;
char s[101],d[100][95];
scanf("%d",&n);
while(scanf("%s",s)) {
int l=strlen(s);
char *a=s+l-6;
if(!strcmp("Cheese",a)) {
s[l-6]=0;
h=0;
for(i=0;i<e;i++) {
if(!strcmp(d[i],s)) {
h=1;
break;
}
}
if(!h){
strcpy(d[e++],s);
++c;
}
}
if(!(--n)) break;
}
printf("%s",(c>3)?"yummy":"sad");
}
풀이 : string.h 사용
while(scanf("%s",s)) 이런식으로 공백으로 구분된 여러 문자열들을 끊어서 받아낼수 있습니다. 물론 끄는 것은 불가하므로 이전에 입력받았던 n을 이용하여 반복문을 종료하면 됩니다.
먼저 입력받은 문자열의 길이를 구한다음, 마지막 부분이 "Cheese" 인지를 확인하기 위해서
char *a=s+l-6; 이런식으로 문자열의 끝부분('\0')으로 간 다음 -6을 하면 맨 뒤의 6자리 문자열의 시작점을 얻어낼수 있습니다.
1. 가져온 마지막 부분이 "Cheese"인지를 판단.
2. Cheese 이전의 부분을 가져와서 ("Cheese"의 'C'부분을 '\0'으로 바꿈) 이전에 입력된 Cheese로 끝나는 문자열과 중복인지를 확인, 만약 중복이 아니라면 d[]에 집어넣고, c을 1 증가 (c는 중복되지 않는 Cheese로 끝나는 문자열의 개수를 의미함)
3. c가 4 이상이라면 yummy 을 출력 그렇지 않다면 sad를 출력
https://www.acmicpc.net/problem/27964
'c언어 > BAEKJOON' 카테고리의 다른 글
c언어 28446번 볼링공 찾아주기 (백준) (0) | 2025.03.08 |
---|---|
c언어 2866번 문자열 잘라내기 (백준) (0) | 2025.03.05 |
c언어 20291번 파일정리 (백준) (0) | 2025.02.28 |
c언어 31908번 커플링 매치 (백준) (0) | 2025.02.25 |
c언어 2910번 빈도 정렬 (백준) (0) | 2025.02.25 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Segment Tree
- 스택
- DP
- 누적합
- 덱
- 그래프
- 정렬
- 1835번
- C++
- 기하학
- find
- java
- 플로이드
- 최대공약수
- 세그먼트 트리
- PASCAL
- BFS
- 오프라인 쿼리
- 그리디
- union
- DFS
- 1835
- 백준
- 누적 합
- Krustal
- 최소 스패닝 트리
- XOR
- C언어
- Lazy Propagation
- 브루트포스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함