ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3주차 샘플 문제
    개인 공부/코딩뉴비 챌린지 2020. 7. 28. 15:56
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h> 
     
    int NUMBER_OF_ANSWERS = 10
    int answer[10= {1234512345}; 
     
    int NUMBER_OF_GRADES = 9
    int SCORES[9= {95908580757065600}; 
    char *GRADES[9= {"A+""A""B+""B""C+""C""D+""D""F"}; 
     
    int *charArrayToIntArray(char *target[]); 
    int getNumberOfCollectAnswers(int target[]); 
    int calculateScore(int numberOfCollectAnswers); 
    void printAnswers(char *who, int target[]); 
    char *calculateGrade(int totalScore); 
     
    int main(int argc, char *argv[]){ 
    int *studentAnswers; 
    int i; 
    int numberOfCollectAnswers; 
    int totalScore; 
    char *grade; 
     
    if (argc != (NUMBER_OF_ANSWERS + 1)){ 
    printf("문제는 10문제입니다. 현재 %d개의 답안을 제출했습니다. 10개의 답안을 제출하시오.\n", argc - 1); 
    printf("ex) ./misson02 4 4 3 5 2 5 1 2 4 3\n"); 
    return -1
     
    studentAnswers = charArrayToIntArray(argv); 
     
    for (i = 0; i < NUMBER_OF_ANSWERS; i++){ 
    if (studentAnswers[i] >= 1 && studentAnswers[i] <= 5
    continue
    else
    printf("답의 범위는 1~5입니다. 범위 외의 답안이 있습니다.\n"); 
    return -1
     
    printf("학점평가 시작\n"); 
     
    numberOfCollectAnswers = getNumberOfCollectAnswers(studentAnswers); 
    totalScore = calculateScore(numberOfCollectAnswers); 
    grade = calculateGrade(totalScore); 
     
    printAnswers("정답", answer); 
    printAnswers("학생", studentAnswers); 
    printf("정답 수 : %d\n", numberOfCollectAnswers); 
    printf("점수 : %d\n", totalScore); 
    printf("학점 : %s\n", grade); 
     
    return 0
     
     
    int *charArrayToIntArray(char *target[]){ 
    int *result = malloc(sizeof(int* NUMBER_OF_ANSWERS); 
    int i; 
     
    for (i = 0; i < NUMBER_OF_ANSWERS; i++){ 
    result[i] = atoi(target[i+1]); 
     
    return result; 
     
    int getNumberOfCollectAnswers(int target[]){ 
    int numberOfCollectAnswers = 0
    int i; 
     
    for (i = 0; i < NUMBER_OF_ANSWERS; i++){ 
    if (target[i] == answer[i]) 
    numberOfCollectAnswers++
     
    return numberOfCollectAnswers; 
     
    int calculateScore(int numberOfCollectAnswers){ 
    return numberOfCollectAnswers * 10
     
    void printAnswers(char *who, int target[]){ 
    int i; 
    printf("%s", who); 
     
    for (i = 0; i < NUMBER_OF_ANSWERS; i++){ 
    printf("%d\t", target[i]); 
     
    char *calculateGrade(int totalScore){ 
    char *grade; 
    int i; 
     
    for (i = 0; i < NUMBER_OF_ANSWERS; i++){ 
    if (totalScore >= SCORES[i]){ 
    grade = malloc(sizeof(char* strlen(GRADES[i])); 
    strcpy(grade, GRADES[i]); 
    break
    return grade; 
     
     
     
     
     
     
     
     
    cs

    엥... 갑자기 난이도가 쑥 올라가서 정말 많이 당황했다. 갑자기 포인터를? 동적할당을? 여기서요? 나야 요즘 포인터, 메모리에 대해서 공부 중이라 거부감이 조금은 적었는데 '코딩뉴비'분들은... 솔직히 진짜 할 맛 안 나실 것 같다... '코딩뉴비' 챌린지인데 심화 개념이 너무 무식하게 우수수 등장한다. 다행히 운영진분들도 난이도 문제를 인지하고 계신 것 같긴 한데... 잘 개선해주실 거라고 믿어야지.

     

    원래는 답안을 보지 않고 혼자서 문제를 풀어보려고 했는데 너무 복잡하고 시간도 없어서 그냥 답안 보면서 타이핑...하다가 이마저도 어려워서 그냥 내 멋대로 조금 고쳤다. 

     

    이해되지 않는 건

     

    1. 전역 변수는 함수 매개변수로 따로 받지 않아도 바로 사용할 수 있는데 왜 또 전역 변수를 매개변수로 받은 것인지..(?)

     

     

    뭐 더 있었던 것 같은데... 모르겠다... 포인터에 온갖 함수들에 마구잡이로 쏟아져 나와서 그냥... 모르겠다.. -_-;;

    금요일에 잘 설명해주시겠지... 일단 기다려봐야지.. 

     

    아 맞아 명령행 인자를 이용해서 코드를 짜는 거라 그런지 더 복잡하게 느껴졌다. 

    ㅑ 그냥 scanf로

    ㅑ 받으면 안될까요...

     

    cs50을 통해서 짜잘짜잘한 부분들까지 많이 배워서 좋긴 한데.. 특히 이번 주차 미션은 너무 헬이었다. 설마 이제부터 시작인 건가..?😂😂

    '개인 공부 > 코딩뉴비 챌린지' 카테고리의 다른 글

    6주차 미션 - 1  (0) 2020.08.19
    4주차 미션 2  (0) 2020.08.04
    4주차 미션 1  (0) 2020.08.04
    3주차 미션 - 문제 3  (0) 2020.07.30

    댓글

Designed by Tistory.