난이도 : 브론즈 3
정답률 : 66.792%

n = int(input())
a = [[0]*( (2*n)-1) for _ in range((2*n)-1)]
s = e = ((2*n)-1)//2
for i in range((2*n)-1):
for j in range(s, e+1):
a[i][j] = 1
if i < ((2*n)-1)//2:
s -= 1
e += 1
else:
s += 1
e -= 1
for i in range((2*n)-1):
for j in range((2*n)-1):
if a[i][j] == 0:
print(' ', end='')
else:
print('*', end='')
print()
▶ 처음에는 배열로 만들어 전체의 그림을 그렸으나 제출 결과에서 출력 형식이 틀렸다고 나왔다.
틀린 이유를 몰라서 검색해본 결과, 띄어쓰기까지 출력이 맞아야 한다고 한다.
백준에 있는 출력 결과를 드래그 해보니 * 이후에는 띄어쓰기가 없음을 보고 다시 코드를 짰다.

n = int(input())
s = e = ((2*n)-1)//2
for i in range((2*n)-1):
for j in range((2*n)-1):
if s > j:
print(" ", end="")
elif s<=j and j<=e:
print("*", end="")
else:
break
print()
if i < ((2*n)-1)//2:
s -= 1
e += 1
else:
s += 1
e -= 1
▶ 아까와 접근 방식은 비슷하지만, *이 마지막으로 찍히는 지점에서는 다음으로 넘어가게 하여 문제를 풀 수 있었다.
현생에 치여 블로그가 되게 오랜만이다. 소소하게 문제 풀고있는거라도 기록해놔야겠다!
'Python > 코딩테스트' 카테고리의 다른 글
| [백준] 2330번 : 수 고르기 (1) | 2023.09.23 |
|---|---|
| [백준] 구현 기초 - 별 찍기 1~7 (0) | 2023.09.21 |
| [프로그래머스] 합성수 찾기 (0) | 2023.05.31 |
| [코딩테스트] 코딩테스트를 시작하기 전에 (0) | 2023.02.21 |
| [백준]10926번: ??! (0) | 2022.09.19 |