ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CS50 Week2: Lab2, Scrabble
    Programming/CS50 2023. 7. 4. 21:28

    하버드 CS50 2주차 Lab 과제 Scrabble 의 풀이 과정을 다룹니다.
    C언어로 글자별 점수가 적혀있는 배열을 이용해 Scrabble 게임의 점수를 계산하고 승자를 가리는 문제입니다.

    Intro

    문제 링크 에서 자세한 내용을 확인할 수 있습니다.

    Scrabble 게임의 승자를 가리는 문제

    $ ./scrabble
    Player 1: COMPUTER
    Player 2: science
    Player 1 wins!
    Detail

    기본 템플릿이 주어져서, 점수 계산 및 출력 부분만 완성하면 된다.

    Template

    #include <ctype.h>
    #include <cs50.h>
    #include <stdio.h>
    #include <string.h>
    
    // Points assigned to each letter of the alphabet
    int POINTS[] = {1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10};
    
    int compute_score(string word);
    
    int main(void)
    {
        // Get input words from both players
        string word1 = get_string("Player 1: ");
        string word2 = get_string("Player 2: ");
    
        // Score both words
        int score1 = compute_score(word1);
        int score2 = compute_score(word2);
    
        // TODO: Print the winner
    }
    
    int compute_score(string word)
    {
        // TODO: Compute and return score for string
    }

    Code

    점수를 계산하는 compute_score 함수.

    배열의 인덱스를 이용해 각 알파벳에 해당하는 점수를 더해주면 된다.

    int compute_score(string word)
    {
        int score = 0;
        for (int i = 0, n = strlen(word); i < n; i++)
        {
            if (isalpha(word[i]))
            {
                score += POINTS[toupper(word[i]) - 65];
            }
            // Non-alphabetic characters have 0 score
        }
        return score;
    }

    출력 파트, 간단한 조건문으로 해결하면 된다.

    if (score1 > score2)
    {
        printf("Player 1 wins!");
    }
    else if (score1 < score2)
    {
        printf("Player 2 wins!");
    }
    else
    {
        printf("Tie");
    }

    댓글