Coding/Baekjoon

[백준] 단계별로 풀어보기 - 3. for문 (python3) (15552, 11022, 2438, 2439, 10871)

jir4vvit 2022. 1. 5. 23:42

 

 

 

파이썬에서의 for문 형식은 아래와 같다.

for item in iterable:
	... 반복할 구문 ...

 

for문에서 빠질 수 없는 range를 소개하고 11문제 중에서 인상이 깊었던 6문제를 소개한다.

 

range(start, stop, step)

# start와 step은 생략 가능하다.
# i가 stop이 되면 for문을 빠져나오는 느낌

for i in range(5): # for(i=0; i<5; i++)
	print(i)
# 출력
0
1
2
3
4

역순으로 출력

for i in range(5,0,-1)
	print(i)
# 출력
5
4
3
2
1

 

15552번 빠른 A+B (링크)

 

15552번: 빠른 A+B

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

www.acmicpc.net

사실 이 문제를 소개하고 싶었던 이유는 저기 빨간색 네모친 것 때문이다. (그냥 내가 이 문제 때문에 저걸 인식을 했기 때문 ㅎ..)

 

 

11022번 A+B - 8 (링크)

import sys

n = int(sys.stdin.readline())

for i in range(1, n+1):
    a,b = map(int, sys.stdin.readline().split())
    print(f"Case #{i}: {a} + {b} = {a+b}")

파이썬 3.6이상만 지원하는 포맷스트링이다.

 

2438번 별 찍기 - 1 (링크)

기본적인 별찍기 문제.

import sys

n = int(sys.stdin.readline())

for i in range(1,n+1): # for(i = 1; i < n+1; i++) 
    for k in range(i):	# for(k = 1; k < i+1; k++)
        print('*', end='')
    print('')

range때문에 괜히 조금 헷갈렸다.
겉의 for는 라인을 의미하고 속의 for는 찍는 별 개수를 의미한다.

 

2439번 별 찍기 - 2 (링크)

기본적인 별찍기 문제2.

import sys

n = int(sys.stdin.readline())

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

별을 찍기 전에 공백을 먼저 출력 해줘야한다. 공백은 4,3,2,1순(거꾸로)으로 찍어야하기 때문에 세번째 인자(step)에 -1을 주었다.

 

10871번 X보다 작은 수 (링크)

import sys

n,x = map(int, sys.stdin.readline().split())
data = list(map(int, sys.stdin.readline().split()))

for d in data:
    if d < x:
        print(d, end=' ')

range 함수 대신에 iterable 객체인 list를 순회할 수 있다.

 

그리고 이때까지 문제에서는 데이터 두개만 공백 기준으로 잘라서 변수 두개에 넣어줬는데, 이 문제의 경우는 공백 기준으로 몇개의 변수에 데이터를 넣어줘야하는지 미리 알 수가 없다.

그래서 list를 이용해서 저장해주었다.