99Club
Posts

© 2025. woongsnote All rights reserved.

Beginner
2024-04-23

골뱅이 찍기 - 돌아간 ㅍ

주어진 셀의 크기 N에 대해 골뱅이를 돌아간 ㅍ 모양으로 출력하는 함수 구현하기

#99일지#99클럽#TIL#개발자스터디#코딩테스트#항해
직접 풀러가기

문제 설명

서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다. 상자 안에는 반시계 방향으로 90도 돌아간 ㅍ자 모양의 골뱅이가 들어있다. 돌아간 ㅍ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다. 상자에는 정사각형 모양의 셀의 크기를 나타내는 숫자 하나가 적혀있다. 셀의 크기 N이 주어지면 예제 출력과 같은 방식으로 골뱅이 모양을 출력하시오.

제한 사항

  • 첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.

입출력 예시

# 1. N = 1

@   @
@@@@@
@   @
@@@@@
@   @

# 2. N = 3

@@@         @@@
@@@         @@@
@@@         @@@
@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@
@@@         @@@
@@@         @@@
@@@         @@@
@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@
@@@         @@@
@@@         @@@
@@@         @@@

풀이

  1. 입력 받은 N을 int로 변환한다.
  2. ㅍ 모양이 가로 및 세로로 각각 5개의 셀로 구성되어 있으므로, 5x5 의 그리드를 생성한다.
  3. 5 x 5를 기준으로 @가 채워지는 부분의 인덱스를 구한다.
  4. 5 x 5의 그리드를 채우기 위해, 5 x 5로 반복해야 하고, N이 1이 아닌 경우, 해당 셀을 모두 @로 채우기 위해, 셀마다 N번의 반복이 추가적으로 필요하다.
  5. 각 셀마다 filled_cells 와 동일한 index인지 확인해서 @ 또는 ‘ ‘을 출력한다.

위의 풀이를 Python로 작성하면 아래와 같다.

Python

N = int(input().strip())

filled_cells = [{0, 4}, {0, 1, 2, 3, 4}, {0,4}, {0,1,2,3,4}, {0,4}]

for row in range(5):
    for _ in range(N):
        for col in range(5):
            if col in filled_cells[row]:
                print('@' * N, end = '')
            else:
                print(' ' * N, end = '')
        print()