-
CS50 Week2: Lab2, ScrabbleProgramming/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"); }