CS50_코칭스터디 팀미션(3주차)

네이버 부스트코스에서 코칭스터디에 참여하며 제대로 풀지 못했던 팀미션을 다시 풀어보자!

문제 1 - 학점 계산 프로그램

#include <stdio.h>
#include <cs50.h>

int userScore = 0;
void getScore();
void printGrade();
const char* grade[9] = {"A+", "A", "B+", "B", "C+", "C", "D+", "D", "F"};
const int score[9] = {95, 90, 85, 80, 75, 70, 65, 60, 0};

int main () {
	printf("학점 프로그램\n 종료를 원하면 999를 입력");
	printf("[학점 테이블]\n");
    printf("학점: ");
	for (int i = 0; i < 9; i++) {
		printf("%s      ", grade[i]);
	}
		printf("\n점수: ");
	for (int i = 0; i < 9; i++) {
		printf("%d      ", score[i]);
	}

	getScore(userScore);

	if (userScore == 999) {
		printf("학점 프로그램을 종료합니다.\n");
		return 0;
	} else if (userScore <= 0 || userScore >= 100) {
		printf("성적을 올바르게 입력하세요. 범위는 0 ~ 100입니다.\n");
	} else {
		printGrade();
	}
}

void getScore(){
	printf("\n성적을 입력하세요 범위는 0 ~ 100입니다.\n");
	scanf("%d", &userScore);
}

void printGrade(){
	for (int i = 0; i < 9; i++) {
		if (userScore >= score[i]) {
			printf("학점은 %s입니다", grade[i]);
            break;
		}
	}
}

느낀 점: 너무너무 뿌듯하고 재밌게 푼 문제다! 미션이 나왔을 당시에는 for문 활용이니... 배열이니... 제대로 생각도 못 했는데, 이번에는 이렇게 풀어야겠다 하고 하나씩 돌려가면서 에러나는 부분 수정하고 했더니 생각보다 빨리 구현해낼 수 있었다!


미션 2 - 빠진 숫자 k찾기

#include <stdio.h>
#define SIZE 500000

int main(int argc, char *argv[]) {
    int n;

    scanf("%d", &n);

    // 1 부터 N 의 숫자중 K 가 빠진 배열
    int partArr[SIZE];
    int lengthOfPartArr = n - 1;

    for (int i = 0; i < lengthOfPartArr; i++) {
        scanf("%d", &partArr[i]);
    }

    int partSum = 0;
    for (int i = 0; i < lengthOfPartArr; i++) {
        partSum += partArr[i];
    }

    int totalSum = n * (n + 1) / 2;

    int k = totalSum - partSum;

    printf("K = %d\n", k);

    return 0;
}

미션 3 - Queue 만들기

#include <stdio.h>
 
#define MAX 50
 
void insert();
void delete();
void display();
int queue_array[MAX];
int rear = - 1;
int front = - 1;

int main() {
    int choice;
    while (1) {
        printf("1.Insert element to queue \n");
        printf("2.Delete element from queue \n");
        printf("3.Display all elements of queue \n");
        printf("4.Quit \n");
        printf("Enter your choice : ");
        scanf("%d", &choice);
        switch (choice) {
            case 1:
                insert();
                break;
            case 2:
                delete();
                break;
            case 3:
                display();
                break;
            case 4:
                return 1;
            default:
                printf("Wrong choice \n");
        }
    }
}
 
void insert()
{
    int add_item;
    if (rear == MAX - 1) {
        printf("Queue Overflow \n");
    } else {
        if (front == - 1) {
            front = 0;
        }

        printf("Inset the element in queue : ");
        scanf("%d", &add_item);
        rear = rear + 1;
        queue_array[rear] = add_item;
    }
}
 
void delete() {
    if (front == - 1 || front > rear) {
        printf("Queue Underflow \n");
        return ;
    } else {
        printf("Element deleted from queue is : %d\n", queue_array[front]);
        front = front + 1;
    }
}
 
void display() {
    int i;
    if (front == - 1) {
        printf("Queue is empty \n");
    } else {
        printf("Queue is : \n");
        for (i = front; i <= rear; i++) {
            printf("%d ", queue_array[i]);
        }
        printf("\n");
    }
}

느낀 점: 위 두 문제는 열심히 구글링해도 이해하지 못해서 결국 우수답안을 보고 일단 문제를 이해하는 시간을 가지기로 했다. 이해하고 나서 자바스크립트로 스스로 구현해봐야겠다.

좋은 웹페이지 즐겨찾기