다중 반복문2

2022. 9. 24. 21:38파이썬(Python)

반응형

1. 행 또는 열에 대칭 출력

 

Q) 모래시계 출력

>> 3

* * * * *
  * * *
    *
  * * *
* * * * *
>> 2

* * *
  *
* * *

 

n=int(input())

"""
행의 개수는 n+(n-1)
1번째 줄 별의 개수 : 2*n-1
n번째 줄 별의 개수 : 1
"""

cnt=2*n+1  # 별 개수 
cnt2=-1  # 공백 개수

for i in range(2*n-1):
    # 1 ~ n번째 줄은 별의 개수가 2개씩 감소
    # 공백 개수는 1개씩 증가
    if i<n:
        cnt-=2
        cnt2+=1
    
    # n+1 ~ 2n-1번째 줄은 별의 개수가 2개씩 증가
    # 공백 개수는 1개씩 감소
    else:
        cnt+=2
        cnt2-=1
    
    # 공백 출력
    for j in range(cnt2):
        print(' ',end=' ')

    # 별 출력
    for j in range(cnt):
        print('*',end=' ')
    
    print()

Q) 다이아몬드 출력

>> 2

 *
* *
 *
>> 3

  *
 * *
* * *
 * *
  *

 

n=int(input())
"""
전체 행의 개수 : n+(n-1)
n번째 줄의 별 개수 : n개
1번째 줄의 공백 개수 : n-1개 
"""

cnt=0  # cnt : 별의 개수
blank=n  # blank : 공백 개수

for i in range(2*n-1):
    # 1 ~ n번째 줄의 별의 개수는 1씩 증가, 공백은 1씩 감소
    # n+1 ~ 2n-1번째 줄의 별의 개수는 1씩 감소, 공백은 1씩 증가
    if i<n:
        cnt+=1
        blank-=1
    else:
        cnt-=1
        blank+=1

    # 공백 출력
    for j in range(blank):
        print(' ',end='')
    
    # 별 출력
    for j in range(cnt):
        print('*',end=' ')
    
    print()

2. 행에 따라 모양을 다르게 출력

 

Q) 계단 출력

>> 2

* 
* *
*
* * * *
>> 3

* 
* *
*
* * * *
*
* * * * * *

 

n=int(input())

cnt=0  # 짝수 번째 줄의 별의 개수

# 전체 행의 개수 : 2n
for i in range(2*n):
    # 홀수 번째 줄은 1개만 출력
    # 짝수 번째 줄은 2개씩 증가 출력
    if i%2==0:
        print('*', end=' ')
    else:
        cnt+=2
        for j in range(cnt):
            print('*',end=' ')
    print()

Q) 조건에 맞는 별 출력

- n을 입력

- 홀수 번째 줄에는 별의 개수를 n, n-1, n-2... 2, 1 개 출력

- 짝수 번째 줄에는 별의 개수를 1, 2, 3,... n-1, n개 출력

 

예시)

>> 3

* * *
*
* *
* *
*
* * *
>> 4

* * * *
*
* * *
* *
* *
* * *
*
* * * *

 

n=int(input())

cnt=n  # 홀수 번째 줄의 별의 개수

# 전체 행의 개수 : 2n
for i in range(1,2*n+1):
    if i%2!=0:
        for j in range(cnt):
            print('*',end=' ')
        cnt-=1
    
    else:
        for j in range(i//2):
            print('*',end=' ')
    
    print()

3. 행, 열에 규칙을 찾아 출력

 

Q) nXn 사각형

>> 2

* * * * *
*   *   *
* * * * *
*   *   *
* * * * *
>> 3

* * * * * * *
*   *   *   *
* * * * * * *
*   *   *   *
* * * * * * *
*   *   *   *
* * * * * * *

 

● 문제 접근

- 자연수 n 입력

1. 전체 행의 개수 : 2n+1

2. 홀수 번째 줄의 별의 개수 : 2n+1

3. 짝수 번째 줄의 별 출력

- 2n+1만큼 반복문을 수행

- 홀수번째는 출력

- 짝수번째는 공백 출력

 

n=int(input())

for i in range(1,2*n+2):
    if i%2==1:
        for j in range(2*n+1):
            print('*',end=' ')
    else:
        for j in range(2*n+1):
            if j%2==1:
                print(' ',end=' ')
            else:
                print('*',end=' ')
    print()

Q) 사각형 내부의 계단 출력

 

>> 5

* * * * *
*       *
* *     *
* * *   *
* * * * *
>>6

* * * * * * 
*         *
* *       *
* * *     * 
* * * *   *
* * * * * *

 

● 문제 접근

- 자연수 n을 입력

1. 전체 행의 개수 : n

2. 제일 윗줄아랫줄의 별의 개수 : n

3. 나머지 줄의 별의 개수

- 양 끝에 별 출력 (2개)

- cnt 변수를 활용해 조건에 만족하면 공백아니면 을 출력

- 한 줄이 완성되면 cnt를 1 증가

 

n=int(input())

cnt=0
for i in range(n):
    if i==0 or i==n-1:
        for j in range(n):
            print('*',end=' ')
    
    else:
        for j in range(n):
            if j==0 or j==n-1:
                print('*',end=' ')
            elif j>cnt:
                print(' ',end=' ')
            else:
                print('*',end=' ')
        cnt+=1
    print()

 

 

'파이썬(Python)' 카테고리의 다른 글

다중 반복문4  (0) 2022.09.29
다중 반복문3  (0) 2022.09.25
다중 반복문1  (0) 2022.09.24
반복문 활용4  (0) 2022.09.22
반복문 활용3  (0) 2022.09.21