From 0fa91cfd109d3cdf6728a48449b8d952843bd8eb Mon Sep 17 00:00:00 2001 From: Hong Beomsun Date: Fri, 15 Jul 2022 20:38:53 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=97=AC=EB=A6=84=EB=B0=A9=ED=95=99=203?= =?UTF-8?q?=EC=A3=BC=EC=B0=A8]=20=ED=99=8D=EB=B2=94=EC=88=9C=20(#60)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [1주차] : 홍범순 - 16503 괄호 없는 사칙연산 Bronze3 (#44) * [1주차] : 홍범순 - 1699 제곱수의 합 Silver2 (#44) * [1주차] : 홍범순 - 5639 이진 검색 트리 Gold5 (#44) * [2주차] : 홍범순 - 1225 이상한 곱셈 Bronze2 (#48) * [2주차] : 홍범순 - 11478 서로 다른 부분 문자열의 개수 Silver3(#48) * [1주차] : 홍범순 - 16503 괄호 없는 사칙연산 Bronze3 (#44) * [1주차] : 홍범순 - 1699 제곱수의 합 Silver2 (#44) * [1주차] : 홍범순 - 5639 이진 검색 트리 Gold5 (#44) * [2주차] : 홍범순 - 1225 이상한 곱셈 Bronze2 (#48) * [2주차] : 홍범순 - 11478 서로 다른 부분 문자열의 개수 Silver3(#48) * [2주차] : 홍범순 - 10830 행렬 제곱 Gold4 (#48) * [3주차] : 홍범순 - 5883 아이폰 9S Silver4 (#60) * [3주차] : 홍범순 - 18247 겨울왕국 티켓 예매 Bronze3 (#60) * [3주차] : 홍범순 - 4913 페르마의 크리스마스 정리 Gold4 (#60) --- .../main.go" | 58 +++++++++++++ .../main.go" | 27 ++++++ .../main.go" | 20 +++++ .../main.go" | 53 ++++++++++++ .../main.go" | 35 ++++++++ .../main.go" | 23 ++++++ .../main.go" | 82 +++++++++++++++++++ .../main.go" | 48 +++++++++++ .../main.go" | 65 +++++++++++++++ 9 files changed, 411 insertions(+) create mode 100644 "\355\231\215\353\262\224\354\210\234/10830 - \355\226\211\353\240\254 \354\240\234\352\263\261/main.go" create mode 100644 "\355\231\215\353\262\224\354\210\234/11478 - \354\204\234\353\241\234 \353\213\244\353\245\270 \353\266\200\353\266\204 \353\254\270\354\236\220\354\227\264\354\235\230 \352\260\234\354\210\230/main.go" create mode 100644 "\355\231\215\353\262\224\354\210\234/1225 - \354\235\264\354\203\201\355\225\234 \352\263\261\354\205\210/main.go" create mode 100644 "\355\231\215\353\262\224\354\210\234/16503 - \352\264\204\355\230\270 \354\227\206\353\212\224 \354\202\254\354\271\231\354\227\260\354\202\260/main.go" create mode 100644 "\355\231\215\353\262\224\354\210\234/1699 - \354\240\234\352\263\261\354\210\230\354\235\230 \355\225\251/main.go" create mode 100644 "\355\231\215\353\262\224\354\210\234/18247 - \352\262\250\354\232\270\354\231\225\352\265\255 \355\213\260\354\274\223 \354\230\210\353\247\244/main.go" create mode 100644 "\355\231\215\353\262\224\354\210\234/4913 - \355\216\230\353\245\264\353\247\210\354\235\230 \355\201\254\353\246\254\354\212\244\353\247\210\354\212\244 \354\240\225\353\246\254/main.go" create mode 100644 "\355\231\215\353\262\224\354\210\234/5639 - \354\235\264\354\247\204 \352\262\200\354\203\211 \355\212\270\353\246\254/main.go" create mode 100644 "\355\231\215\353\262\224\354\210\234/5883 - \354\225\204\354\235\264\355\217\260 9S/main.go" diff --git "a/\355\231\215\353\262\224\354\210\234/10830 - \355\226\211\353\240\254 \354\240\234\352\263\261/main.go" "b/\355\231\215\353\262\224\354\210\234/10830 - \355\226\211\353\240\254 \354\240\234\352\263\261/main.go" new file mode 100644 index 0000000..7f1f6e6 --- /dev/null +++ "b/\355\231\215\353\262\224\354\210\234/10830 - \355\226\211\353\240\254 \354\240\234\352\263\261/main.go" @@ -0,0 +1,58 @@ +package main + +import ( + "fmt" +) + +var N, B int +var A, res [][]int + +func main() { + fmt.Scanf("%d %d", &N, &B) + + A = make([][]int, N) + res = make([][]int, N) + + for i := 0; i < N; i++ { + A[i] = make([]int, N) + res[i] = make([]int, N) + for j := 0; j < N; j++ { + fmt.Scan(&A[i][j]) + } + res[i][i] = 1 + } + + for B > 0 { + if B%2 == 1 { + res = matrixMulti(res, A) + } + A = matrixMulti(A, A) + B /= 2 + } + + printMatrix() +} + +func matrixMulti(A, B [][]int) [][]int { + tmp := make([][]int, N) + for i := 0; i < N; i++ { + tmp[i] = make([]int, N) + for j := 0; j < N; j++ { + tmp[i][j] = 0 + for k := 0; k < N; k++ { + tmp[i][j] += (A[i][k] * B[k][j]) + } + tmp[i][j] = tmp[i][j] % 1000 + } + } + return tmp +} + +func printMatrix() { + for i := 0; i < N; i++ { + for j := 0; j < N; j++ { + fmt.Printf("%d ", res[i][j]) + } + fmt.Println() + } +} diff --git "a/\355\231\215\353\262\224\354\210\234/11478 - \354\204\234\353\241\234 \353\213\244\353\245\270 \353\266\200\353\266\204 \353\254\270\354\236\220\354\227\264\354\235\230 \352\260\234\354\210\230/main.go" "b/\355\231\215\353\262\224\354\210\234/11478 - \354\204\234\353\241\234 \353\213\244\353\245\270 \353\266\200\353\266\204 \353\254\270\354\236\220\354\227\264\354\235\230 \352\260\234\354\210\230/main.go" new file mode 100644 index 0000000..e7cb0f3 --- /dev/null +++ "b/\355\231\215\353\262\224\354\210\234/11478 - \354\204\234\353\241\234 \353\213\244\353\245\270 \353\266\200\353\266\204 \353\254\270\354\236\220\354\227\264\354\235\230 \352\260\234\354\210\230/main.go" @@ -0,0 +1,27 @@ +package main + +import ( + "fmt" +) + +func main() { + var input string + fmt.Scanf("%s", &input) + + data_array := make(map[string]bool) + var substr string = "" + + for i := 0; i < len(input); i++ { + for j := i; j < len(input); j++ { + substr = input[i : j+1] + data_array = add(data_array, substr) + } + } + + fmt.Println(len(data_array)) +} + +func add(s map[string]bool, v string) map[string]bool { + s[v] = true + return s +} diff --git "a/\355\231\215\353\262\224\354\210\234/1225 - \354\235\264\354\203\201\355\225\234 \352\263\261\354\205\210/main.go" "b/\355\231\215\353\262\224\354\210\234/1225 - \354\235\264\354\203\201\355\225\234 \352\263\261\354\205\210/main.go" new file mode 100644 index 0000000..e11ba99 --- /dev/null +++ "b/\355\231\215\353\262\224\354\210\234/1225 - \354\235\264\354\203\201\355\225\234 \352\263\261\354\205\210/main.go" @@ -0,0 +1,20 @@ +package main + +import ( + "fmt" +) + +func main() { + var A, B string + fmt.Scanf("%s %s", &A, &B) + + count := 0 + + for i := 0; i < len(A); i++ { + for j := 0; j < len(B); j++ { + count += int(A[i]-'0') * int(B[j]-'0') + } + } + + fmt.Println(count) +} diff --git "a/\355\231\215\353\262\224\354\210\234/16503 - \352\264\204\355\230\270 \354\227\206\353\212\224 \354\202\254\354\271\231\354\227\260\354\202\260/main.go" "b/\355\231\215\353\262\224\354\210\234/16503 - \352\264\204\355\230\270 \354\227\206\353\212\224 \354\202\254\354\271\231\354\227\260\354\202\260/main.go" new file mode 100644 index 0000000..cc70f06 --- /dev/null +++ "b/\355\231\215\353\262\224\354\210\234/16503 - \352\264\204\355\230\270 \354\227\206\353\212\224 \354\202\254\354\271\231\354\227\260\354\202\260/main.go" @@ -0,0 +1,53 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +func main() { + in := bufio.NewReader(os.Stdin) + data, _ := in.ReadString('\n') + data = strings.TrimSpace(data) + + split := strings.Split(data, " ") + + Kstr := []string{split[0], split[2], split[4]} + K := []int{} + O := []string{split[1], split[3]} + + for _, v := range Kstr { + j, _ := strconv.Atoi(v) + K = append(K, j) + } + + calc1 := calc(calc(K[0], K[1], O[0]), K[2], O[1]) + calc2 := calc(K[0], calc(K[1], K[2], O[1]), O[0]) + + if calc1 <= calc2 { + fmt.Println(calc1) + fmt.Println(calc2) + + } else { + fmt.Println(calc2) + fmt.Println(calc1) + } +} + +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 + } + return 0 +} diff --git "a/\355\231\215\353\262\224\354\210\234/1699 - \354\240\234\352\263\261\354\210\230\354\235\230 \355\225\251/main.go" "b/\355\231\215\353\262\224\354\210\234/1699 - \354\240\234\352\263\261\354\210\230\354\235\230 \355\225\251/main.go" new file mode 100644 index 0000000..9fc8cc0 --- /dev/null +++ "b/\355\231\215\353\262\224\354\210\234/1699 - \354\240\234\352\263\261\354\210\230\354\235\230 \355\225\251/main.go" @@ -0,0 +1,35 @@ +package main + +import ( + _ "bufio" + "fmt" + _ "os" + _ "strconv" +) + +func main() { + var n int + fmt.Scan(&n) + + var data [100010]int + data[0] = 0 + data[1] = 1 + + for i := 0; i <= n; i++ { + data[i] = i + } + + for i := 1; i <= n; i++ { + for j := 1; j*j <= i; j++ { + data[i] = min(data[i], data[i-j*j]+1) + } + } + fmt.Println(data[n]) +} + +func min(a, b int) int { + if a < b { + return a + } + return b +} diff --git "a/\355\231\215\353\262\224\354\210\234/18247 - \352\262\250\354\232\270\354\231\225\352\265\255 \355\213\260\354\274\223 \354\230\210\353\247\244/main.go" "b/\355\231\215\353\262\224\354\210\234/18247 - \352\262\250\354\232\270\354\231\225\352\265\255 \355\213\260\354\274\223 \354\230\210\353\247\244/main.go" new file mode 100644 index 0000000..84a4f98 --- /dev/null +++ "b/\355\231\215\353\262\224\354\210\234/18247 - \352\262\250\354\232\270\354\231\225\352\265\255 \355\213\260\354\274\223 \354\230\210\353\247\244/main.go" @@ -0,0 +1,23 @@ +package main + +import ( + "fmt" +) + +func main() { + var T int + fmt.Scan(&T) + + for ; T > 0; T-- { + var N, M int + fmt.Scan(&N, &M) + + //L : 12 + + if N < 12 || M < 4 { + fmt.Print("-1\n") + } else { + fmt.Printf("%d\n", 11*M+4) + } + } +} diff --git "a/\355\231\215\353\262\224\354\210\234/4913 - \355\216\230\353\245\264\353\247\210\354\235\230 \355\201\254\353\246\254\354\212\244\353\247\210\354\212\244 \354\240\225\353\246\254/main.go" "b/\355\231\215\353\262\224\354\210\234/4913 - \355\216\230\353\245\264\353\247\210\354\235\230 \355\201\254\353\246\254\354\212\244\353\247\210\354\212\244 \354\240\225\353\246\254/main.go" new file mode 100644 index 0000000..87ce899 --- /dev/null +++ "b/\355\231\215\353\262\224\354\210\234/4913 - \355\216\230\353\245\264\353\247\210\354\235\230 \355\201\254\353\246\254\354\212\244\353\247\210\354\212\244 \354\240\225\353\246\254/main.go" @@ -0,0 +1,82 @@ +package main + +import ( + "fmt" +) + +var ARR_SIZE int = 1000010 +var prime [1000010]bool +var primesum [1000010]int +var squaresum [1000010]int + +func main() { + Init() + getPrimes() + //debugprint() + + for i := 3; i < ARR_SIZE; i++ { + if prime[i] == true { + primesum[i] = primesum[i-1] + 1 + } else { + primesum[i] = primesum[i-1] + } + + if prime[i] == true && (i%4) == 1 { + squaresum[i] = squaresum[i-1] + 1 + } else { + squaresum[i] = squaresum[i-1] + } + } + + for { + var L, U int + fmt.Scan(&L, &U) + + x, y := 0, 0 + + if L == -1 && U == -1 { + return + } + + if L >= 1 { + x = primesum[U] - primesum[L-1] + y = squaresum[U] - squaresum[L-1] + } else if L < 1 && U >= 0 { + x = primesum[U] + y = squaresum[U] + } else { + x = 0 + y = 0 + } + + fmt.Printf("%d %d %d %d\n", L, U, x, y) + } + +} + +func Init() { + for i := 2; i < ARR_SIZE; i++ { + prime[i] = true + primesum[i] = 0 + squaresum[i] = 0 + } + primesum[2] = 1 + squaresum[2] = 1 +} + +func getPrimes() { + prime[1] = false + for i := 2; i*i < ARR_SIZE; i++ { + if prime[i] == true { + for j := i * i; j < ARR_SIZE; j += i { + prime[j] = false + } + } + } +} + +func debugprint() { + for i := 0; i < 50; i++ { + fmt.Printf("%d %d \n", i, prime[i]) + } +} diff --git "a/\355\231\215\353\262\224\354\210\234/5639 - \354\235\264\354\247\204 \352\262\200\354\203\211 \355\212\270\353\246\254/main.go" "b/\355\231\215\353\262\224\354\210\234/5639 - \354\235\264\354\247\204 \352\262\200\354\203\211 \355\212\270\353\246\254/main.go" new file mode 100644 index 0000000..0af4fc3 --- /dev/null +++ "b/\355\231\215\353\262\224\354\210\234/5639 - \354\235\264\354\247\204 \352\262\200\354\203\211 \355\212\270\353\246\254/main.go" @@ -0,0 +1,48 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +var arr [10010]int + +func main() { + in := bufio.NewReader(os.Stdin) + + n := 0 + for { + data, _ := in.ReadString('\n') + data = strings.TrimSpace(data) + if data == "" { + break + } + arr[n], _ = strconv.Atoi(data) + n++ + } + + searcher(0, n) + +} + +func searcher(start, end int) { + if start >= end { + return + } + + var i int = start + + for ; i < end; i++ { + if arr[start] < arr[i] { + break + } + } + + searcher(start+1, i) + searcher(i, end) + + fmt.Println(arr[start]) +} diff --git "a/\355\231\215\353\262\224\354\210\234/5883 - \354\225\204\354\235\264\355\217\260 9S/main.go" "b/\355\231\215\353\262\224\354\210\234/5883 - \354\225\204\354\235\264\355\217\260 9S/main.go" new file mode 100644 index 0000000..c952804 --- /dev/null +++ "b/\355\231\215\353\262\224\354\210\234/5883 - \354\225\204\354\235\264\355\217\260 9S/main.go" @@ -0,0 +1,65 @@ +package main + +import ( + "fmt" +) + +var N int + +func main() { + fmt.Scan(&N) + + var arr []int = make([]int, N) + + for i := 0; i < N; i++ { + fmt.Scan(&arr[i]) + } + var B [1000010]bool + ans := 1 + + for i := 0; i < 1000010; i++ { + B[i] = false + } + + for i := 0; i < N; i++ { + if B[arr[i]] == false { + mx := 1 + cnt := 1 + + newArr := popNumberFromArray(arr, arr[i]) + + for j := 1; j < len(newArr); j++ { + if newArr[j] == newArr[j-1] { + cnt += 1 + } else { + mx = max(cnt, mx) + cnt = 1 + } + } + mx = max(cnt, mx) + + B[arr[i]] = true + ans = max(ans, mx) + } + } + + fmt.Println(ans) +} + +func max(a, b int) int { + if a > b { + return a + } + return b +} + +func popNumberFromArray(arr []int, num int) []int { + var newArr []int + for i := 0; i < len(arr); i++ { + if arr[i] != num { + newArr = append(newArr, arr[i]) + } + } + + return newArr +}