package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
var size int
fmt.Printf("input square's side length > ")
_, err := fmt.Scan(&size)
if err != nil {
panic(err)
}
input := makeInput(size)
fmt.Println("input")
for i := 0; i < size; i++ {
fmt.Println(input[i])
}
output := make([][]int, size)
for i := 0; i < size; i++ {
output[i] = make([]int, size)
}
for i := 0; i < size; i++ {
for j := 0; j < size; j++ {
output[j][size-1-i] = input[i][j]
}
}
fmt.Println("output")
for i := 0; i < size; i++ {
fmt.Println(output[i])
}
}
//정사각형의 사이즈를 받아서 [][]을 만든다.
func makeInput(size int) [][]int {
seed := []int{}
for i := 0; i < size; i++ {
for j := 0; j < size; j++ {
seed = append(seed, i*size+j)
}
}
square := make([][]int, size)
for i := 0; i < size; i++ {
square[i] = make([]int, size)
for j := 0; j < size; j++ {
len := len(seed)
index := r1.Intn(len)
square[i][j] = seed[index]
seed = append(seed[:index], seed[index+1:]...)
}
}
return square
}
cGFja2FnZSBtYWluCgppbXBvcnQgKAoJImZtdCIKCSJtYXRoL3JhbmQiCgkidGltZSIKKQoKZnVuYyBtYWluKCkgewoJdmFyIHNpemUgaW50CglmbXQuUHJpbnRmKCJpbnB1dCBzcXVhcmUncyBzaWRlIGxlbmd0aCA+ICIpCglfLCBlcnIgOj0gZm10LlNjYW4oJnNpemUpCglpZiBlcnIgIT0gbmlsIHsKCQlwYW5pYyhlcnIpCgl9CglpbnB1dCA6PSBtYWtlSW5wdXQoc2l6ZSkKCWZtdC5QcmludGxuKCJpbnB1dCIpCglmb3IgaSA6PSAwOyBpIDwgc2l6ZTsgaSsrIHsKCQlmbXQuUHJpbnRsbihpbnB1dFtpXSkKCX0KCglvdXRwdXQgOj0gbWFrZShbXVtdaW50LCBzaXplKQoJZm9yIGkgOj0gMDsgaSA8IHNpemU7IGkrKyB7CgkJb3V0cHV0W2ldID0gbWFrZShbXWludCwgc2l6ZSkKCX0KCglmb3IgaSA6PSAwOyBpIDwgc2l6ZTsgaSsrIHsKCQlmb3IgaiA6PSAwOyBqIDwgc2l6ZTsgaisrIHsKCQkJb3V0cHV0W2pdW3NpemUtMS1pXSA9IGlucHV0W2ldW2pdCgkJfQoJfQoKCWZtdC5QcmludGxuKCJvdXRwdXQiKQoJZm9yIGkgOj0gMDsgaSA8IHNpemU7IGkrKyB7CgkJZm10LlByaW50bG4ob3V0cHV0W2ldKQoJfQoKfQoKLy/soJXsgqzqsIHtmJXsnZgg7IKs7J207KaI66W8IOuwm+yVhOyEnCBbXVtd7J2EIOunjOuToOuLpC4KZnVuYyBtYWtlSW5wdXQoc2l6ZSBpbnQpIFtdW11pbnQgewoJc2VlZCA6PSBbXWludHt9Cglmb3IgaSA6PSAwOyBpIDwgc2l6ZTsgaSsrIHsKCQlmb3IgaiA6PSAwOyBqIDwgc2l6ZTsgaisrIHsKCQkJc2VlZCA9IGFwcGVuZChzZWVkLCBpKnNpemUraikKCQl9Cgl9CglyMSA6PSByYW5kLk5ldyhyYW5kLk5ld1NvdXJjZSh0aW1lLk5vdygpLlVuaXhOYW5vKCkpKQoJc3F1YXJlIDo9IG1ha2UoW11bXWludCwgc2l6ZSkKCWZvciBpIDo9IDA7IGkgPCBzaXplOyBpKysgewoJCXNxdWFyZVtpXSA9IG1ha2UoW11pbnQsIHNpemUpCgkJZm9yIGogOj0gMDsgaiA8IHNpemU7IGorKyB7CgkJCWxlbiA6PSBsZW4oc2VlZCkKCQkJaW5kZXggOj0gcjEuSW50bihsZW4pCgkJCXNxdWFyZVtpXVtqXSA9IHNlZWRbaW5kZXhdCgkJCXNlZWQgPSBhcHBlbmQoc2VlZFs6aW5kZXhdLCBzZWVkW2luZGV4KzE6XS4uLikKCQl9Cgl9CglyZXR1cm4gc3F1YXJlCn0K