타일 색칠 방법 구하기

Yun Young Choi·2022년 9월 11일

CodingTest-C

목록 보기
11/15
post-thumbnail

이거는 이해하기까지 시간이 좀 걸렸다. 인터넷 실명제를 도입하면 출제자를 알 수 있지 않으까 할 게 잇어.

부연 설명도 있는데 매개 변수의 범위와 조건에 맞지 않을 경우 리턴값을 -1로 하라는구만-!


main 설명

int main() {
    int tile_length1 = 11;
    char* ret1 = solution(tile_length1);


    printf("solution 함수의 반환 값은 %s 입니다.\n", ret1);
    
    int tile_length2 = 16;
    char* ret2 = solution(tile_length2);


    printf("solution 함수의 반환 값은 %s 입니다.\n", ret2);
}
  1. 타일 개수를 tile_length로 11개로 할당
  2. char형 포인터 변수 ret에 solution 함수 반환값 할당
  3. 아래는 동일하게 ^^~

solution 설명

char* solution(int tile_length) {
    char* answer = (char*) malloc(sizeof(char) * (tile_length+1) );
    char com[6] = {'R','R','R','G','G','B'};
    if(tile_length%6 == 1 || tile_length%6 == 2 || ) // 빈칸
        strcpy(answer, "-1");
    else{
        for(int i = 0; i < tile_length; i++)
            answer[i] = com[i%6];
        answer[tile_length]='\0';
    }
    return answer;
}
  1. 타일의 갯수에 따라 배열의 크기를 지정하기 위해 char형 포인터 변수 answer로 동적 할당
  2. 타일은 무조건 'R' 세 번, 'G' 두 번, 'B' 한 번 으로 배열되어야 한다. 이 세 개가 이어지지 않았을 때엔 -1 반환
  3. com에 있는 'RRRGGB' 6개를 기준으로 타일의 길이를 6으로 나눈다. (왜냐하면 이 6개가 기준이 되기 때문)
  4. answer의 마지막 배열은 널('\0') 문자열의 마지막은 무조건 ㄴㅓㄹ(\0) ★
  5. answer 배열 리턴

RRR / RRRGG / RRRGB / RRRGGBRRR / RRRGGBRRRGG / RRRGGBRRRGGB

출처 - EduAtoZ - Programming


빈칸 채우기

char* solution(int tile_length) {
    char* answer = (char*) malloc(sizeof(char) * (tile_length+1) );
    char com[6] = {'R','R','R','G','G','B'};
    if(tile_length%6 == 1 || tile_length%6 == 2 || tile_length%6 == 4)
        strcpy(answer, "-1");
    else{
        for(int i = 0; i < tile_length; i++)
            answer[i] = com[i%6];
        answer[tile_length]='\0';
    }
    return answer;
}

전체 코드

char* solution(int tile_length) {
    char* answer = (char*) malloc(sizeof(char) * (tile_length+1) );
    char com[6] = {'R','R','R','G','G','B'};
    if(tile_length%6 == 1 || tile_length%6 == 2 || tile_length%6 == 4)
        strcpy(answer, "-1");
    else{
        for(int i = 0; i < tile_length; i++)
            answer[i] = com[i%6];
        answer[tile_length]='\0';
    }
    return answer;
}

int main() {
    int tile_length1 = 11;
    char* ret1 = solution(tile_length1);


    printf("solution 함수의 반환 값은 %s 입니다.\n", ret1);
    
    int tile_length2 = 16;
    char* ret2 = solution(tile_length2);


    printf("solution 함수의 반환 값은 %s 입니다.\n", ret2);
}

실행 결과


profile
안냥하세요

0개의 댓글