본문 바로가기

Study/algorithms

(48)
[백준] 2231 분해합 https://www.acmicpc.net/problem/2231 package main import ( "bufio" "fmt" "os" ) var writer = bufio.NewWriter(os.Stdout) var reader = bufio.NewReader(os.Stdin) func printf(f string, a ...interface{}) { fmt.Fprintf(writer, f, a...) } func scanf(f string, a ...interface{}) { fmt.Fscanf(reader, f, a...) } func concon(n int) int { result := n for ; n > 0; n /= 10 { result = result + n%10 } return res..
[백준] 2798 블랙잭 https://www.acmicpc.net/problem/2798 발생할 수있는 모든 경우의 수를 조합으로 찾아서 푼다. 찾는 과정에서 조건을 걸어서 더 찾지 않아도 되는 구간은 넘어가게 했다. package main import ( "bufio" "fmt" "os" ) var reader = bufio.NewReader(os.Stdin) var writer = bufio.NewWriter(os.Stdout) func printf(f string, a ...interface{}) { fmt.Fprintf(writer, f, a...) } func scanf(f string, a ...interface{}) { fmt.Fscanf(reader, f, a...) } var n, m, result int va..
[백준] 11729 하노이 탑 이동 순서 https://www.acmicpc.net/problem/11729 golang의 fmt 패키지는 기본적으로 buffer를 사용하지 않기 때문에 그냥 출력이나 입력을 하면 느리다고한다. 그냥 출력으로 했더니 시간초과 났다. 아래와 같이 buffer를 사용하게 바꾸니까 맞았다. 하노이 탑 개수는 대충 계산해보니까 등비수열 비슷한것 이었다. 내부 함수는 어떻게 진행되는지 찾아서 풀었다. package main import ( "bufio" "fmt" "math" "os" ) var out = bufio.NewWriter(os.Stdout) func hanoi(s, d int, n float64) { if n == 1 { fmt.Fprintf(out, "%d %d\n", s, d) return } m := 6..
[백준] 2447 별 찍기 - 10 https://www.acmicpc.net/problem/2447 문제설명 3의 배수 N이 입력되면 그에 맞춰서 재귀적으로 별을 찍으면 된다. 입력 27 출력 *************************** * ** ** ** ** ** ** ** ** * *************************** *** ****** ****** *** * * * ** * * ** * * * *** ****** ****** *** *************************** * ** ** ** ** ** ** ** ** * *************************** ********* ********* * ** ** * * ** ** * ********* ********* *** *** *** ***..
[백준] 10870 피보나치수 5 https://www.acmicpc.net/problem/10870 문제는 단계별로풀어보기에서 재귀로 들어왔지만 재귀 쓰기 싫어해서 안썼다. package main import ( "bufio" "fmt" "os" ) var fibo [21]int func fillFIbo() { fibo[0] = 0 fibo[1] = 1 for i := 2; i < 21; i++ { fibo[i] = fibo[i-1] + fibo[i-2] } } func main() { fillFIbo() in := bufio.NewReader(os.Stdin) var n int fmt.Fscanf(in, "%d", &n) fmt.Printf("%d\n", fibo[n]) }
[백준] 10872 팩토리얼 https://www.acmicpc.net/problem/10872 package main import ( "bufio" "fmt" "os" ) func recursiveFactorial(n int) int { if n == 1 || n == 0 { return 1 } return n * recursiveFactorial(n-1) } func main() { var n int in := bufio.NewReader(os.Stdin) fmt.Fscanf(in, "%d\n", &n) fmt.Printf("%d", recursiveFactorial(n)) }
[백준] 3053 택시 기하학 https://www.acmicpc.net/problem/3053 택시 기하학은 원을 그리면 유클리드에서 마름모 모양으로 나온다. package main import ( "bufio" "fmt" "math" "os" ) func main() { in := bufio.NewReader(os.Stdin) var n float64 fmt.Fscanf(in, "%f\n", &n) fmt.Printf("%f\n%f", n*n*math.Pi, n*n*2) }
[백준] 4153 직각삼각형 https://www.acmicpc.net/problem/4153 package main import ( "bufio" "fmt" "os" ) func main() { in := bufio.NewReader(os.Stdin) var x, y, z int for { fmt.Fscanf(in, "%d %d %d\n", &x, &y, &z) if x == 0 && y == 0 && z == 0 { return } // y 가 제일 큰 경우 if x < y && z < y { y, z = z, y } else if y < x && z < x { x, z = z, x } if x*x+y*y == z*z { fmt.Println("right") } else { fmt.Println("wrong") } } }