반응형

이번에 푼 문제는 [14624번 - 전북대학교] 문제다.

 

솔직히 잘 안되서 다른 블로그 참고해가면서 풀었다.

 

생각보다 꽤 간단해서 놀랐다.

 

*내가 추가로 안 점 

 

파이썬에는 "//"연산자가 있다.

 

이 연산자는 a = int(a/2) => a = a//2로 해주는 연산자다. 

예를 들어서 a=7일 때, 위 첫 번째 식처럼 int로 형 변환을 해 주어야 3으로 나오는데, 그냥 // 연산자를 해주면 형변환을 굳이 할 필요가 없다.

 

*풀이

n = int(input())
if n % 2 == 0:
    print("I LOVE CBNU")
elif n % 2 == 1:
    print("*"*n)
    print(" "*(n//2)+"*")
    for i in range(n//2):
        print(" "*(n//2 - i - 1)+"*"+" "*(1+i*2)+"*")

먼저 짝수 일 때는 그냥 I LOVE CBNU를 해주면 되기 때문에 간단하게 짝수 코드를 작성한다.

(근데 사실 CBNU는 CHEONBUK NATIONAL UNIVERSITY가 아니라 CHUNGBUK NATIONAL UNIVERSITY다. ㅡㅡ)

 

그리고 홀수 일 때가 관건인데,

 

첫째 줄은 별이 n개 만큼 찍힌다.

 

둘 째 줄은 n이 1이건, 3이건, 49이건, 별이 하나만 찍힌다. 그리고 그 별이 찍히기 전까지의 공백은 n//2만큼이다.(n//2에 대한 설명은 위 참고, 형 변환 연산자) 그리고 별하나 찍어주고 줄을 바꿔준다. 처음에 별 뒤에 공백까지 찍어줘야 되나 했으나 찍어줄 필요가 없다.

 

그리고 셋째 줄부터는 특정한 패턴이 있다. 

첫 번째 별이 찍히기 전까지 공백이 (n//2-i-1)만큼 있고, 그 다음에 첫 번째 별이 하나 찍힌다. 그리고 두 별 사이의 공백이 (1+i*2)칸 만큼 있고 그 다음에 두 번째 별이 찍힌다. 위에서와 마찬가지로 두 번째 별 뒤의 공백은 굳이 코딩해 줄 필요는 없다.

 

생각보다 간단했다. 그래도 브론즈2가 나한테 아직 쉽지만은 않은 것 같다.

 

반응형

+ Recent posts