하이.
오늘은 브론즈 3
별 찍기 문제이다.
풀다가 나의 코드가 다른 사람들꺼에 비해 길어서 다들 어떻게 풀었나 구경을 하다가 신기한 걸 발견했다.
처음엔 어이가 없었으나 그 원인을 알고난 후 아핫! 했당. ㅎㅎ
일단 문제를 보여줄게.

비교적 쉬운 문제이다.
내가 처음에 작성했던 코드는 아래와 같다.
N = int(input())
ct = 1
for i in range(N) :
if (i == 0) : {
print("*" * (2 * N - (i+ct)))
}
else : {
print(" " * (i-1), "*" * (2 * N - (i+ct)))
}
ct += 1
뭔가 더 짧고 쉽게 풀 수 있을 거 같은데 생각이 나질 않아 이렇게 풀었다.
그리고 난 출력할 때 콤마와 플러스의 차이를 몰랐다.
난 " " 이 공백을 곱하기 0하면 당연히 출력이 안 될 줄 알았는데 출력이 되서 아 무조건 출력이 되는 구나 하고 if문으로 따로 0일 때만 구분지어 출력해줬다.
그런데 다른 사람들은 한 줄로 풀어서 엥 그럴 수가 있나 내껀 왜 그러지? 하면서 의문을 품고 비교를 해보았는데 쉼표와 플러스 기호의 차이였다 !!!
1. print(" " * i , "*" * ((N-i) * 2-1))2. print(" " * i + "*" * ((N-i) * 2-1))
","와 "+"의 차이가 있을 줄 몰랐다...
왜 그런지 이제야 알았네. ㅎㅎ
콤마로 연결한 경우, 띄어쓰기를 하며 각 값이 개별 값으로 전달되어 출력됨.
플러스로 연결한 경우, 띄어쓰기를 하지 않고 하나의 값으로 결합되어 출력되는데 문자와 숫자 형식이 혼합될 수 없어 에러가 발생한다.
(=> 이 경우엔 형변환 해주면 됨.)
N = int(input())
for i in range(N) :
print(" " * i + "*" * ((N-i) * 2-1))