BOJ 2439 : 별찍기 -2

Ok Haeeun·2022년 12월 12일
0

Go로 algorithm문풀

목록 보기
4/16

오늘은 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에서는 ### while 문 대용으로 for (조건) { } 형태의 for문 을 사용한다.

아니 이렇게 풀려고 하니까 은근히 어렵더라니깐요..
서로 변수가 물리고 물리다보니 꽤 헷갈렸다.
여러번 돌려보고 나서야 풀었다.

후...

Go는 놀라운 언어...
여기에서 한 번 더 놀래킨다.

효율 심하게 좋음...

메모리 사용량이랑 시간을 보면, 3년 전에 파이썬으로 풀었던 방식보다 코드 길이는 3배 정도 길지만 메모리 사용량은 거의 20배, 시간은 8배를 줄일 수 있었다.

이래서 Go Go 하는구나..

어쨌든 오늘도 풀었다. 와자자 너무 바쁘다...화이팅 내인생

profile
貫徹

0개의 댓글