본문 바로가기

Python/코딩테스트

[백준] 2444번 : 별 찍기 - 7

난이도 : 브론즈 3

정답률 : 66.792%

문제 : [백준] 2444번 : 별 찍기 - 7

 

 

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

아까와 접근 방식은 비슷하지만, *이 마지막으로 찍히는 지점에서는 다음으로 넘어가게 하여 문제를 풀 수 있었다.

 

 


현생에 치여 블로그가 되게 오랜만이다. 소소하게 문제 풀고있는거라도 기록해놔야겠다!