코딩도장 심사문제모음

19.6 심사문제 역삼각형 모양 별출력

codermun 2020. 10. 8. 21:39
728x90
반응형

코딩 도장 Python

19.6 심사 문제 역삼각형모양의 별출력 (입력값)

표준 입력으로 삼각형의 높이가 입력됩니다. 입력된 높이만큼 산 모양으로 별을 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 이때 출력 결과는 예제와 정확히 일치해야 합니다. 모양이 같더라도 공백이나 빈 줄이 더 들어가면 틀린 것으로 처리됩니다.

사용된 코드

1 .int

2. input

3. for 문

4 if 문

5. print

6. range

더보기

# 5 (input)

# 0     4      출력 ( 0 1 2 3 4 5 6 7 8)

# 1    345     출력 ( 0 1 2 3 4 5 6 7 8)

# 2   23456    출력 ( 0 1 2 3 4 5 6 7 8)

# 3  1234567   출력 ( 0 1 2 3 4 5 6 7 8)

# 4 012345678  출력 ( 0 1 2 3 4 5 6 7 8)  

 

# 3 (input)

# 0 -   2     출력 ( 0 1 2 3 4)

# 1 -  123    출력 ( 0 1 2 3 4)

# 2 - 01234   출력 ( 0 1 2 3 4)

첫 접근 방법

위와 같이 보았을때 처음에는 rangn(2*H-1) 으로 range 값에 따라 바뀌도록 해보았지만, 뻘짓이었다.

 

1. 첫 코드에서는 입력값 -1 출력

2. 아래 줄로 내려갈수록 초기값을 기준으로 가지치듯 하나씩 추가되는 것을 확인하였고

3. range(2*H-1)등 개 뻘짓을 한 결과, 약 20분이나 고민한 끝에 한방에 풀지 못하고 힌트를 봐야했다.

 

풀이

결론 : for 반복문 두개를 결합

 

1. for문법에 reversed 메서드를 결합해 아래와 같은 출력문을 하나 만든다. 

더보기

H = int(input())

 

for i in range(H):

    for j in reversed(range(H)):

        if i >= j :

            print('*'end='')

        else :

            print(' 'end='')

 

2. for문법으로 아래와 같은 출력문을 하나 더 만든다. 

더보기

    for j in range(H) :

        if i > j :

            print('*'end='')

        else:

            print(' 'end='')

3. 이 둘을 합쳐 하나의 for 문안의 루프를 만들고, 바깥루프의 for문의 print() 출력 문구를 추가해 줄바꿈을 해주면 완성.

더보기

H = int(input())

for i in range(H):

    for j in reversed(range(H)):

        if i >= j :

            print('*'end='')

        else :

            print(' 'end='')

    for j in range(H) :

        if i > j :

            print('*'end='')

        else:

            print(' 'end='')

    print()

 

※ 실제 코딩 도장의 해법과 다를  수 있으며, 답은 여러가지가 존재합니다.

코딩 지적 정말 감사히 받겠습니다.

※ 점섬의 텍스트 박스가 접은글이었네요.. 클릭 감사합니다.

 

728x90
반응형