반응형
https://www.acmicpc.net/problem/14888
이것도 문제를 안읽고 풀어서 아주 시간을 날렸다. 왜자꾸 이러는거지 ㅋㅋ
translation scheme까지 그려가면서 힘들게 힘들게 연산자 우선순위 고려해서 풀었다.
하지만 연산자 우선순위를 고려하지 않고 풀어야했다. 어쩐지 실버1단계인데 이렇게 구현할게 많더라니.. 다음부터는 문제를 잘 읽어야겠다!
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...) }
var n int
var opName = [4]string{"+", "-", "*", "/"}
var opList [4]int
var numList []int
var minmin, maxmax int
func calc(a, b int, op string) int {
switch op {
case "+":
return a + b
case "-":
return a - b
case "*":
return a * b
case "/":
return a / b
default:
return 0
}
}
func solve(num, result int) {
if num == n {
if result > maxmax {
maxmax = result
}
if result < minmin {
minmin = result
}
return
}
for i := 0; i < 4; i++ {
if opList[i] > 0 {
opList[i]--
r := calc(result, numList[num], opName[i])
solve(num+1, r)
opList[i]++
}
}
return
}
func main() {
defer writer.Flush()
scanf("%d\n", &n)
numList = make([]int, n)
for i := 0; i < n; i++ {
scanf("%d ", &numList[i])
}
scanf("%d %d %d %d\n", &opList[0], &opList[1], &opList[2], &opList[3])
maxmax = -10e9
minmin = 10e9
solve(1, numList[0])
printf("%d\n%d\n", maxmax, minmin)
}
'Study > algorithms' 카테고리의 다른 글
[백준] 11054. 가장긴 바이토닉 부분수열 C++ (0) | 2020.02.06 |
---|---|
[백준] 2748 피보나치 수 2 (0) | 2020.02.03 |
[백준] 9663 N-Queen (0) | 2020.01.28 |
[백준] 15652 N과 M (4) (0) | 2020.01.27 |
[백준] 15651 N과 M (3) (0) | 2020.01.27 |