Go/Go 알고리즘

백준 10824번 네 수 Go 구현해보기

kimc 2021. 11. 7. 23:08

```

백준 10824번 네 수 Go 구현해보기

```

 

이번 글을 통해 배워갈 내용

  1.  백준 10824번 풀이
  2.  bytesBuffer 연습

https://www.acmicpc.net/problem/10824

 

10824번: 네 수

첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000)

www.acmicpc.net

 

 

 

백준 10824번은

난이도 브론즈 등급의 문제로서

 

4개의 숫자가 주어질 때

앞에 두 수를 있어 붙이고

뒤에 두 수를 있어 붙여서

더해준 다음 출력하면 되는 쉬운 문제입니다.

 

예시

1000000 2000000 3000000 4000000 

10000002000000 + 30000004000000 = 40000006000000

 

 


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


문자열을 더하는데 자바에서 쓰던 것과 비슷한

bytes.Buffer를 사용하였습니다.

저는 이 방법이 string.Join(), + 연산자, fmt.Sprintf()보다는 빠른 것 같습니다.

 

 

 

전체 코드는 다음과 같습니다

package main

import (
	"bufio"
	"bytes"
	"fmt"
	"os"
	"strconv"
)

// 두 스트링 숫자를 이러붙인 값을 리턴하는 함수
func concatTwoStrNum (lhs *string, rhs *string) int64 {
	var bytesBuffer bytes.Buffer
	bytesBuffer.WriteString(*lhs)
	bytesBuffer.WriteString(*rhs)
	concatedNum, error := strconv.ParseInt(bytesBuffer.String(), 0, 64)
	if(error != nil){
		concatedNum = 0
	}
	return concatedNum
}



func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	
	var a, b, c, d string
	fmt.Fscanln(reader, &a, &b, &c, &d)
	fmt.Fprintln(writer, concatTwoStrNum(&a, &b) + concatTwoStrNum(&c, &d))
	writer.Flush()
}

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 

참조 및 인용

Introduction to Algorithms


https://tour.golang.org/list

 

A Tour of Go

 

tour.golang.org

728x90