관리 메뉴

솜씨좋은장씨

[BaekJoon] 23805번 : 골뱅이 찍기 - 돌아간 ㄹ (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 23805번 : 골뱅이 찍기 - 돌아간 ㄹ (Python)

솜씨좋은장씨 2022. 12. 8. 12:46
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 골뱅이 찍기 - 돌아간 ㄹ 입니다.

별찍기에 이은 골뱅이 찍기! 타임이 돌아온 것 같습니다.

- 23794번 골뱅이 찍기 - 정사각형

- 23802번 골뱅이 찍기 - 뒤집힌 ㄱ

- 23803번 골뱅이 찍기 - ㄴ 

- 23804번 골뱅이 찍기 - ㄷ

위 4개의 문제에 이은 드디어 마지막

- 23805번 골뱅이 찍기 - 돌아간 ㄹ 입니다!

 

23805번: 골뱅이 찍기 - 돌아간 ㄹ

서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다. 상자 안에는 반시계방향으로 90도 돌아간 ㄹ자 모양의 골뱅이가 들어있다. 돌아간 ㄹ자 모양은 가로 및 세로로 각각 5개

www.acmicpc.net

👨🏻‍💻 문제 풀이

앞선 골뱅이 찍기 문제를 차근 차근 풀어왔다면!

아주아주아주아주 쉽게 풀 수 있는 문제입니다.

 

N 을 입력 받으면 정해진 규칙에 따라 골뱅이를 직사각형 모양으로 찍는 문제입니다.

 

먼저 N * 5 개의 ' '(공백) 문자열을 가진 리스트를 하나 만들어 줍니다.

answer = ['' for _ in range(N * 5)]

반복문을 돌면서 

첫번째부터 N 번째 까지는 @가 N * 3번 + 공백이 N 번 + @가 N 번 으로 구성된 문자열을

N 번쨰 부터 N * 5 - N 번째 까지는 @ 가 홀수번째 인덱스에 N 번씩 교차로 나타나도록 구성된 문자열을

나머지는 @ 가 N 번 + 공백이 N 번 + @ 가 N * 3 번 으로 구성된 문자열을 넣도록 합니다.

for idx in range(N*5):
    if idx < N:
        answer[idx] = f"{'@' * (N * 3)}{' ' * N}{'@' * N}"
    elif N <= idx < N * 5 - N:
        answer[idx] = f"{'@' * N}{' ' * N}{'@' * N}{' ' * N}{'@' * N}"
    else:
        answer[idx] = f"{'@' * (N)}{' ' * N}{'@' * N * 3}"

마지막으로 이렇게 만든 문자열 리스트를 \n 으로 join 하고 출력하면 정답입니다.

 

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

def golbange_print_rotate_ㄹ(N):
    answer = ['' for _ in range(N * 5)]
    
    for idx in range(N*5):
        if idx < N:
            answer[idx] = f"{'@' * (N * 3)}{' ' * N}{'@' * N}"
        elif N <= idx < N * 5 - N:
            answer[idx] = f"{'@' * N}{' ' * N}{'@' * N}{' ' * N}{'@' * N}"
        else:
            answer[idx] = f"{'@' * (N)}{' ' * N}{'@' * N * 3}"
            
        
    return "\n".join(answer)


if __name__ == "__main__":
    N = int(input())
    
    print(golbange_print_rotate_ㄹ(N=N))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments