BOJ 5597 : 과제 안 내신 분..?

Ok Haeeun·2022년 12월 15일
0

Go로 algorithm문풀

목록 보기
7/16

오늘의 문제는~
숫자를 입력받아서 배열에 넣고 for문으로 돌려서 조건에 해당하면 출력해주는 간단한 문제였다.

golang의 bufio에 익숙해지고 있는 중이라서, 요즘 계속 배열 문제를 풀고 있다.

아마 더 좋은 방법과 golang의 장점을 잘 살릴 수 있는 코드들이 많이 있을 것이라 생각하고 있어서 차근차근 다가가는 방식으로 접근하려 한다.

golang의 장점 중 하나는 error핸들링을 쉽게 할 수 있도록 return값에 error 메세지도 함께 반환해준다는 것이다.

그래서 입력받을 때, 처음 명시해준 타입이 맞는지, 몇개의 입력을 받았는지를 fmt.Scan()의 반환값으로 바로 받아볼 수 있어 많이 이용하는 것 같다.

문제는 28개의 입력을 받고, 입력받지 않은 2개의 숫자를 찾아내 출력해주면 되는 문제였으므로, 다음과 같이 풀었다.

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main(){
	var studentSlice []bool = make([]bool, 30)

	stdin := bufio.NewReader(os.Stdin)

	for i:=0;i<28;i++{
		var a int
		_, err := fmt.Scan(&a)

		if err != nil{
			fmt.Println(err)
			stdin.ReadString('\n')
		} else{
			studentSlice[a-1] = true
		}
	}

	for i:=0;i<30;i++{
		if studentSlice[i] == false{
			fmt.Println(i+1)
		}
	}
}

메모리 효율..꽤 좋아서 마음에 든다.
golang에 js의 includes같은 함수가 있는지 궁금하다. 사실 없을 거 같긴 하지만..go라는 언어에게 있는 개발자 친화적인 메서드들을 알고싶다~

profile
貫徹

0개의 댓글