나도 코딩 영상을 통해 파이썬의 기초 문법을 한번 훑었으나, 역시 직접 해봐야 내가 부족한 점이 더 잘 보인다 (분명 다 이해했다고 생각했는데 막상 하려니 실수 투성이...). 백준에서 제공하는 문제들은 기초를 다지는데 좋은 사이트인 것 같다.
사칙연산, if문을 거쳐서 for문을 풀었고 그 중 정리가 필요한 문제 및 내용을 적었다.
📌In a nutshell...
input()
, sys.stdin.readline()
range()
의 다양한 사용 방식#2741번
입력값을 받아, 1부터 입력값까지 차례대로 출력하기.
sys.stdin.readline()
함수를 처음 배웠으며, input()
보다 빠르며(sys모듈이 런타임 환경을 직접 제어하는 모듈이라 그런 것 같다), 마지막에 개행문자 \n
까지 포함하기 때문에 rtrip()
을 추가하는 것이 좋다. 또한 정수형으로 받으려면 int
를 추가해야 한다.
import sys
N = sys.stdin.readline() #입력값 N을 받아서
for i in range(int(N)): #N을 정수형으로 바꾼 후, 1부터 N까지 출력
print(i+1)
#2742번
입력값 받아, 입력값 > 1순서로 출력하기.
처음에는 reverse()
를 떠올리기 쉬운데 이는 list 내 값을 그대로 뒤집는 것 뿐이지 내림차순 시켜주는 것은 아니다. 그리고 지금 이 문제에서는 입력값을 받아서 -1씩 출력하는 것이기 때문에 적합하지 않다. 아래와 같이 짜면 된다.
N = int(input())
for i in range(N): #range(N): range(0,4)
print(N) #N을 먼저 출력
N -= 1 #N에서 1을 뺌
우선 나는 range()
를 한번도 stop값만 입력하는 방식을 사용한 적 없다가, 이 문제를 통해 range()
에 다양한 입력방식이 있다는 것을 알게 되었다.
그래서 range(start,stop,step)을 사용하면 더 간결해진다.
for i in range(int(input()),0,-1): #입력값에서 0까지 -1씩 이동
print(i)
#10871번
5 4 이라고 입력 후, 1 3 5 2 4 라고 입력하면 3보다 더 작은 수를 순서대로 출력하라는 문제다 (결과: 1 3 2).
N,X = map(int,input().split())
lst = list(map(int, input().split())) #두 번째 입력값들은 list 형태로 반환한다
for i in range(N): #N: 0~(N-1)까지 i에 대입
if lst[i] < X:
print(lst[i], end=" ")
만약 두 번째 줄 입력변수 lst를 list 형태로 만들지 않으면, 순서대로 하나씩 갖고 올 수 없다. 인덱싱을 하려면 list 형태로 만들어줘야 한다.
여기서 가변인자와 리스트 내포(list comprehension)을 사용하면 더 간결해진다. 리스트 내포는 [표현식 for 항목 in 반복가능객체 [if 조건문]]
의 구조로 사용한다.
N,X = map(int,input().split())
lst = [*map(int,input().split())]
print(*[n for n in lst if n < X])
내용 출처: 백준