[백준 알고리즘] for문(1 ~ 11)

borderline0px·2021년 5월 17일
0

백준알고리즘

목록 보기
3/4

for VS while

for문은 보통 명시적으로 몇번 실행해야 하는지 정해진 상태에서 많이 사용

  • list, array 같이 길이가 정해져 있는 값에 반복문을 적용할 때

while문은 몇번 실행해야 하는지 모르는 상태에서 많이 사용

  • 무한루프를 만들기 위해서 활용

for i in range(1, n)에 관하여

변수 i를 출력시 사용할 것이냐에 따라 range() 설정시 주의하자
range(t)는 0 ~ t-1까지 t번 반복하는데
print(f'{i}번째: {a + b}')와 같이 1번째, 2번째..를 출력하려면 range설정시 1부터 들어가도록 하는 것이 좋을 것이다


1단계(문제번호: 2739): 구구단

n = int(input())

for i in range(1, 10):
    print(n, '*', i, '=', n*i)

2단계(문제번호: 10950): A + B

n = int(input())

for _ in range(n):
    a, b = map(int, input().split())
    print(a + b)

여기서는 for i in range()처럼 i 변수를 사용하는 대신 (언더바)를 사용하였는데
range 함수를 통해 생성된 숫자 요소를 변수로 선언할 필요가 없기 때문이다
쉽게 말해 i를 활용해 출력할 것이 없기 때문에
를 통한 표현이 가능하다는 것


3단계(문제번호: 8393): 합

n = int(input())

sum = 0
for i in range(n + 1):
    sum = sum + i
print(sum)

4단계(문제번호: 15552): 빠른 A + B

import sys

n = int(input())
for _ in range(n):
    a, b = map(int, sys.stdin.readline().split())
    print(a + b)

문제에서 for문을 사용할 때 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간 초과가 날 수 있다는 점을 언급하고 있다
또한, 입력 방식으로 sys.stdin.readline을 활용하도록 힌트를 준다

  • sys(System-specific parameters and functions)
    sys는 파이썬이 제공하는 모듈을 의미. os 모듈안에 있으며 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈

5단계(문제번호: 2741): N 찍기

n = int(input())

for i in range(n):
    print(i + 1)

6단계(문제번호: 2742): 기찍 N

정방향은 되는데 역방향으로 생각하는게 안되는
나 자신에게 현타가 잠깐 왔던 시간😭

n = int(input())

for i in range(n):
    print(n - i)

7단계(문제번호: 11021): A + B

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

이 문제의 관건은 주어진 출력문 형식에 맞추어 출력해야한다는 것
변수와 문자열을 섞어서 출력해야 하는 위와 같은 문제는 f-string이 편하다는 것을 배웠음

f-string은 f라는 접두사를 붙여서 사용하고 변수는 {} 괄호를 사용하여 입력할 수 있다


8단계(문제번호: 11022): A + B

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

9단계(문제번호: 2438): 별 찍기 - 1

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

10단계(문제번호: 2439): 별 찍기 - 2

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

11단계(문제번호: 10871): X보다 작은 수

N, X = map(int, input().split())
array = list(map(int, input().split()))
for i in array:
    if i < X:
        print(i, end=" ")

입력을 list형태로 받아오는 것과
한줄에 출력하는 것이 관건

원래는 한줄한줄씩 출력이 되지만
end=" "로 작성하면 한줄에 출력이 된다

profile
어려운 게 아니라 낯설어서 그런거야

0개의 댓글