티스토리 뷰
문제
FizzBuzz 문제는 𝑖=1,2,⋯ 에 대해 다음 규칙에 따라 문자열을 한 줄에 하나씩 출력하는 문제입니다.
- 𝑖 3 의 배수이면서 5 의 배수이면 “FizzBuzz”를 출력합니다. 가
- 𝑖 3 의 배수이지만 5 의 배수가 아니면 “Fizz”를 출력합니다. 가
- 𝑖 3 의 배수가 아니지만 5 의 배수이면 “Buzz”를 출력합니다. 가
- 𝑖 3 의 배수도 아니고 5 의 배수도 아닌 경우 𝑖 를 그대로 출력합니다. 가
FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열이 주어집니다. 이때, 이 세 문자열 다음에 올 문자열은 무엇일까요?
입력
FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열이 한 줄에 하나씩 주어집니다. 각 문자열의 길이는 8 이하입니다. 입력이 항상 FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열에 대응됨이 보장됩니다.
출력
연속으로 출력된 세 개의 문자열 다음에 올 문자열을 출력하세요. 여러 문자열이 올 수 있는 경우, 아무거나 하나 출력하세요.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char arr1[10];
char arr2[10];
char arr3[10];
int ans;
int checkFizBuz(char* arr){
if(strcmp(arr,"Fizz") == 0){
return 0;
}else if(strcmp(arr,"Buzz") == 0){
return 0;
}else if(strcmp(arr,"FizzBuzz") == 0){
return 0;
}else{
return 1;
}
}
int main() {
scanf("%s %s %s",arr1,arr2,arr3);
if(checkFizBuz(arr1) == 1){
ans = atoi(arr1);
ans += 3;
if((ans % 3 == 0)&& (ans % 5 == 0)){
printf("FizzBuzz");
}else if(ans %3 ==0){
printf("Fizz");
}else if(ans %5 == 0){
printf("Buzz");
}else{
printf("%d",ans);
}
}else if(checkFizBuz(arr2) == 1){
ans = atoi(arr2);
ans += 2;
if((ans % 3 == 0)&& (ans % 5 == 0)){
printf("FizzBuzz");
}else if(ans %3 == 0){
printf("Fizz");
}else if(ans %5 == 0){
printf("Buzz");
}else{
printf("%d",ans);
}
}else if(checkFizBuz(arr3) == 1){
ans = atoi(arr3);
ans += 1;
if((ans % 3 == 0)&& (ans % 5 == 0)){
printf("FizzBuzz");
}else if(ans %3 ==0){
printf("Fizz");
}else if(ans %5 == 0){
printf("Buzz");
}else{
printf("%d",ans);
}
}
return 0;
}
뭔가 세상에서 제일 멍청하게 푼 것 같긴하다. strcmp랑 atoi써서 풀었다. 최적화 할 부분이 많아 보이는데...
strcmp부분이랑 arr 3개 안 쓰고 풀 수 있을 것 같긴하다.
'공부한거 > PS' 카테고리의 다른 글
백준 10989번 - 수 정렬하기 3 (C언어) (0) | 2024.06.29 |
---|---|
백준 2775번 - 부녀회장이 될테야 (C언어) (0) | 2024.06.28 |
백준 1259번 - 팰린드롬수 (C언어) (0) | 2024.06.28 |
백준 2789번 - 블랙잭 (C언어) (0) | 2024.06.28 |