Browse Source

Solved part2

Piotr Czajkowski 1 year ago
parent
commit
16479f42d5
1 changed files with 19 additions and 4 deletions
  1. 19 4
      07/code.go

+ 19 - 4
07/code.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"log"
 	"os"
+	"sort"
 	"strings"
 )
 
@@ -109,9 +110,7 @@ func getSizes(root dir, sizes []int) (int, []int) {
 	return size, sizes
 }
 
-func part1(root dir) int {
-	_, sizes := getSizes(root, []int{})
-
+func part1(sizes []int) int {
 	sum := 0
 	for i := range sizes {
 		if sizes[i] < 100000 {
@@ -122,6 +121,20 @@ func part1(root dir) int {
 	return sum
 }
 
+func part2(sizes []int, total int, fsSize int, needed int) int {
+	unused := fsSize - total
+	needed -= unused
+
+	sort.Ints(sizes)
+	for i := range sizes {
+		if sizes[i] >= needed {
+			return sizes[i]
+		}
+	}
+
+	return 0
+}
+
 func main() {
 	if len(os.Args) < 2 {
 		log.Fatal("You need to specify a file!")
@@ -135,5 +148,7 @@ func main() {
 	}
 
 	root := readInput(file)
-	fmt.Println("Part1:", part1(root))
+	total, sizes := getSizes(root, []int{})
+	fmt.Println("Part1:", part1(sizes))
+	fmt.Println("Part2:", part2(sizes, total, 70000000, 30000000))
 }