본문 바로가기
코드업(codeup)/C

[코드업(codeup)/C]코드업(codeup) 1705 : 369 게임 C언어

by starfish22 2021. 12. 31.
728x90

▶문제 : 369 게임 (codeup.kr)

 

369 게임

가능한 모든 수에 대해 채점하므로 채점 시간이 좀 걸립니다.(수행평가 부분점수용) 테스트 케이스 개수를 19개로 줄였습니다.

codeup.kr

 

▶코드 작성

#include <stdio.h>

int main()
{
    char num[4];
    int cnt = 0;
    scanf("%s", num);//문자열로 입력 받기

    if ((num[0] - '0') % 3 == 0)//3의 배수일 때
    {
        num[cnt++] = 'K';//문자 K를 넣고 다음 자리(cnt)를 가리킨다
    }
    if (num[1] != NULL && (num[1] - '0') % 3 == 0 && num[1] != '0')
    {//다음 num[1] 숫자가 있고 3의 배수이고 0이 아닐 때
        num[cnt++] = 'K';
    }
    if (num[2] != NULL && (num[2] - '0') % 3 == 0 && num[2] != '0')
    {//다음 num[2] 숫자가 있고 3의 배수이고 0이 아닐 때
        num[cnt++] = 'K';
    }

    if (cnt == 0) printf("%s", num);//위 조건에 한번도 만족하지 못했을 때
    else
    {
        num[cnt] = '\0';
        printf("%s", num);
    }

    return 0;
}

 

▶해석

정수로 입력받으면 뻔하니까 문자열로 입력받아서 if문 조건을 숫자가 존재하는지, 3의 배수인지, 0이 아닌지를 판단하였다. 문자 K를 넣을 때 자리가 다르면 안 되기 때문에 cnt변수를 따로 선언하여 K를 넣을 때마다 +1 해주었다. if문 조건을 만족하지 못하면 cnt==0이므로 숫자를 그대로 출력해주었고, 아니면 num [cnt] = '\0'으로 문자를 끝 마침 해주어 K를 출력해주었다.

728x90

댓글