오늘은 Go의 반복문을 복습해볼겸 반복문 문제의 베이직이라고 볼 수 있는 별찍기 문제를 풀어보았다.
생각보다 어려웠음. 나 어쩌면 바보..?ㅋㅋㅋㅋㅋㅋㅋ
이 문제를 풀 때 처음으로 생각한 것은 문자열 곱하기!!!
파이썬으로 생각하면 문자열 곱하기가 가능해서 훨씬 쉬운데
Go는 문자열 곱하기가 안된다...!!! wow..
12시까지 풀어야되는 줄 알고
엉 냅다 문자열 곱하기~ 하고 날로 먹어볼 속셈이었는데 실패해버렸다.
다행히 아침이 되기 전까지는 괜찮다는 갓상우의 답장으로 안심하고
침착하게 찾아보았다.
음..없다. 역시나 없다. Go에는 문자열 곱하기가 없는걸로 추정된다.
그래서 while문 안에 for문 두개를 넣는 킹 비효율 방식을 사용하기로 하였다. 어찌되었든 풀어보자는 마음으로..
Go에는 while문이 없다ㅋㅅㅋ
ㅋㅋㅋㅋㅋㅋㅋ아...이렇게 간단한 문제라고 생각한 곳에서도 역시나 많은 걸 배울 수 있었다..
package main
import "fmt"
func main(){
var a int
k:=1
fmt.Scanf("%d", &a)
for k<=a {
result:=""
for i:=a-k; i>0; i--{
result += " "
}
for j:=1; j<=k; j++{
result += "*"
}
fmt.Println(result)
k++
}
}
아니 이렇게 풀려고 하니까 은근히 어렵더라니깐요..
서로 변수가 물리고 물리다보니 꽤 헷갈렸다.
여러번 돌려보고 나서야 풀었다.
후...
Go는 놀라운 언어...
여기에서 한 번 더 놀래킨다.
메모리 사용량이랑 시간을 보면, 3년 전에 파이썬으로 풀었던 방식보다 코드 길이는 3배 정도 길지만 메모리 사용량은 거의 20배, 시간은 8배를 줄일 수 있었다.
어쨌든 오늘도 풀었다. 와자자 너무 바쁘다...화이팅 내인생