프로그래밍/GO

[Go] 성적 저장 프로그램 예제 정답 코드

Joo-Topia 2019. 12. 16.
728x90
SMALL

구름 edu의 "바로 실행해보면서 배우는 Go Lang"강의를 수강하면서 Go언어에 대해서 시간이 날 때마다 공부를 하고 있다. (이제는 취미가 코딩이다!)

강의 중간에 배운 내용을 기반으로 예제를 풀어야 다음 단계로 넘어갈 수 있는데, 난이도가 점점 올라갈 수록 예제 문제도 시간이 좀 걸리는 것 같다. (처음 배우는 사람 기준이다!)

혹시나 빠르게 강의만 듣고 싶어하는 사람이 있을 수도 있다고 생각하여 예제 정답 코드를 블로그에 올려두려고 한다.

혹시 강의의 저작권에 문제가 생긴다면 바로 글을 삭제하겠다!!

 

- 성적 관리 프로그램 정답 코드

package main

import "fmt"

type student struct {
    name string
    gender string
    score map[string]int
}

func newStudent(name, gender string) *student {
    return &student{name, gender, map[string]int{}}
}

func main() {
    var cnt int
    var cntSubject int
    var name string
    var gender string
    var subject string
    var score int
    
    fmt.Scanln(&cnt, &cntSubject)
	
    studentSlice := make([]*student, 0, 0)
	
    for i := 0; i < cnt; i++ {	
        fmt.Scanln(&name, &gender)
        studentSlice = append(studentSlice, newStudent(name, gender))

        for j := 0; j < cntSubject; j++ {
            fmt.Scanln(&subject, &score)
            studentSlice[i].score[subject] = score
        }
		
    }
	
    for i := 0; i < cnt; i++ {
        fmt.Println("----------")
        fmt.Println(studentSlice[i].name, studentSlice[i].gender)
		
        for index, val := range studentSlice[i].score {
            fmt.Println(index, val)
        }	
    }
    fmt.Println("----------")
}

 

문제에서 구조체 슬라이스를 선언하여 풀이를 작성하라고 권유하고 있다. 구조체도 하나의 자료형이라고 생각하고 접근해보면 생각보다 어렵지 않게 문제를 풀어 나갈 수 있다.

 

*구름 edu의 "바로 실행해보면서 배우는 Go Lang"을 수강 후 정리한 내용입니다.
소스코드는 깃허브 저장소를 참고! (Go언어 외 다양항 프로그래밍 예제도 볼 수 있다.)

 

728x90
SMALL

댓글