for문(컴퓨팅 사고력 향상)

송현석·2022년 7월 12일
0

알고리즘(Algorithm)

목록 보기
3/13
post-thumbnail

예제 1. 별 찍기 - 1

[문제]
첫째 줄에는 별 1개, 둘쨰 줄에는 별 2개, N번쨰 줄에는 별 N개를 찍는 문제

[입력]
첫째 줄에 N(1 <= N <= 100)이 주어진다.

[출력]
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

예제 입력 1예제 출력 1
5*
* *
* * *
* * * *
* * * * *

[문제 출처] https://www.acmicpc.net/problem/2438

1) n = 5 라면 5개의 출력 줄, n = 3 이라면 3개의 출력 줄이 있다.
2) 각 줄마다 별은 각 줄의 순서만큼 존재한다.(첫 번째 줄에는 별 1개, 두 번째 줄에는 별 2개...) 그러므로 1)를 구현하기 위해서는 for문이 하나 필요하다.

for i in range(n):

2)를 구현하기 위해서 i번째 줄에는 *을 i번 출력해야 한다. 해당 줄이 끝날 때마다 다음줄에 별을 출력하기 위해 print()를 사용해 출력 위치를 다음 줄로 넘긴다.

for i in range(n):
	for j in range(n + 1):
    	print('*', end="")
    print()

해답코드

n = int(input())
for i in range(n):
	for j in range(n + 1):
    	print('*', end = "") # end = "" 를 통해 출력 위치를 다음 줄로 넘기는 것을 방지한다.
    print()

예제 2. 별 찍기 - 2

[문제]
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

[입력]
첫째 줄에 N(1<=N<=100)이 주어진다.

[출력]
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

예제 입력 1예제 출력
5*
* *
* * *
* * * *
* * * * *

[문제 출처] https://www.acmicpc.net/problem/2439

1) 별은 n개의 줄에 출력되고 있다.
2) 각 줄마다 별이 출력되는 처음 위치 이전에는 (n-줄의 위치)의 띄어쓰기 ' '가 존재한다.
3) 각 줄마다 별의 개수는 해당 줄의 위치와 같다.

  • 1)를 해결하기 위해 n개의 출력하기 위한 for문을 하나 만든다.
for i in range(n):
  • 2)를 해결하기 위해 각 줄마다 (n - i - 1)번의 띄어쓰기(' ')를 출력해준다(i는 현재 몇 번째 줄인지를 의미한다. i가 0이라면 첫 번째 줄은 n-i-1(5-0-1) = 4로 4번의 띄어쓰기를 해줘야한다.).
for i in range(n):
	for j in range(n - i - 1):
    	print(' ', end = "")
  • 3)을 해결하기 위해 각 줄마다 별을 i번 출력해준다.
for i in range(n):
	for j in range(n - i - 1):
    	print(' ', end = "")
    for j in range(i + 1):
    	print('*', end = "")
    print()

해답코드

n = int(input())
for i in range(n):
	for j in range(n - i - 1):
    	print(' ', end = "")
    for j in range(i + 1):
    	print('*', end = "")
    print()

예제 3. 별 찍기 - 5

[문제]
첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ... N번째 줄에는 별 2 * N - 1 개를 찍는 문제
별은 가운데를 기준으로 대칭이어야 한다.

[입력]
첫째 줄에 N(1 <= N <= 100)이 주어진다.

[출력]
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

예제 입력예제 출력
5*
* *
* * *
* * * *
* * * * *

n = 5일 때는 다음과 같다.

123456789
1*
2***
3*****
4*******
5*********

1) 출력은 n개의 줄로 이루어져 있다.
2) 별을 찍기 이전에는 (n - 현재위치줄)의 띄어쓰기(' ')가 있다.
3) "현재위치줄 * 2 - 1" 의 별을 찍어야 한다.

  • 1)을 해결하기 위해 for문을 통해 n개의 줄을 출력하도록 한다.
for i in range(n):
  • 2)를 해결하기 위해 n개의 줄 각각에 "n - 현재위치줄(n - i - 1)"의 띄어쓰기 ' ' 를 출력한다.
for i in range(n):
	for j in range(n - i - 1)
    	print(' ', end = "")
  • 3)을 해결하기 위해 현재위치줄에 해당하는 곳에 "n * 현재위치 - 1" 만큼 별을 출력해주면 된다.
for i in range(n):
	for j in range(n - i - 1):
    	print(' ', end = "")
    for j in range(2 * 1 + 1):
    	print('*'. end = "")
    print()

해답코드

n = int(input())

for i in range(n):

	for j in range(n - i - 1):
    	print(' ', end = "")
    
    for j in range(2 * i + 1):
    	print('*', end ="")
    
    print()
profile
데이터 사이언스 입문

0개의 댓글