❗️ 계속해서 업데이트 될 예정...
잘못된 부분이 있다면 알려주세요 🙏
✏️ 내가 작성한 코드
print("Hello World!")
✏️ 내가 작성한 코드
a, b = map(int, input().split(' '))
print(a+b)
💡 흥미로운 코드
print(sum(map(int,input().split())))
split에서 sep(구분자)를 지정하지 않을 경우, 공백 기준으로 분리된다.
연속된 공백 문자 또한, 하나의 공백의 구분자로 사용된다.
Reference
✏️ 내가 작성한 코드
a, b = int(input()), int(input())
print(a+b)
💡 흥미로운 코드
print(int(input())+int(input()))
✏️ 내가 작성한 코드
cnt = int(input())
for _ in range(cnt):
print(sum(map(int,input().split())))
✏️ 내가 작성한 코드
while 1:
try:
print(sum(map(int,input().split())))
except:
break
while 에서 0이 아닌 숫자는 모두 True로 인식한다.
내용이 있는 문자열 또한, 모두 True로 인식한다.
Reference
✏️ 내가 작성한 코드
while 1:
value = input()
if value == '0 0':
break
print(sum(map(int,value.split())))
💡 흥미로운 코드
import sys
while True:
a,b = map(int,sys.stdin.readline().split())
if a==b==0: break
print(a+b)
input VS sys.stdin.readline
똑같은 기능을 가진 것 같지만 어떤 작업을 하는가에 따라 실행 속도가 차이가 난다.
일반적으로 대량의 데이터를 읽을 때input
보단sys.stdin.readline
이 훨씬 빠르다.차이가 나는 이유
input
의 경우 프롬프트에 메세지를 띄울 수 있는 기능이 있다.
기본값을 설정해 프롬프트가 비어 있어도 약간의 오버헤드가 생긴다.
또한input
은 자동으로 입력 값의 끝에 있는 개행을 제거한다.
하지만 개행을 제거하기 위해input
을 사용하는 것보다sys.stdin.readline().strip()
을 사용하는 것이 훨씬 더 빠르다.
Reference1 Reference2
✏️ 내가 작성한 코드
import sys
input()
for line in sys.stdin:
print(sum(map(int,line.split(','))))
✏️ 내가 작성한 코드
import sys
input()
i = 1
for line in sys.stdin:
print('Case #{0}:'.format(str(i)), sum(map(int,line.split())))
i += 1
💡 흥미로운 코드
import sys
input()
i = 1
for line in sys.stdin:
value = sum(map(int,line.split()))
print(f'Case #{i}: {value}')
i += 1
문자열 포맷팅
f-string
을 사용하자!
str.format
을 사용해도 문제가 없지만 코드가 장황해져, 직관적으로 어떤 코드인지 파악하기 힘들어 진다.
이러한 점을 해결한 것이f-string
이다.
Reference
✏️ 내가 작성한 코드
import sys
input()
i = 1
for line in sys.stdin:
a, b = map(int,line.split())
value = a + b
print(f'Case #{i}: {a} + {b} = {value}')
i += 1
💡 흥미로운 코드
import sys
input()
for i,line in enumerate(sys.stdin.readlines()):
A,B=map(int,line.split())
print(f"Case #{i+1}: {A} + {B} = {A+B}")
enumerate
enumerate는 '열거하다' 라는 뜻을 가진다.
iterable한 객체를 인덱스와 함께 열거해준다.
Reference
✏️ 내가 작성한 코드
import sys
for line in sys.stdin:
print(line, end='')
💡 흥미로운 코드
import sys
print(sys.stdin.read())
✏️ 내가 작성한 코드
import sys
print(sys.stdin.read())
✏️ 내가 작성한 코드
import sys
input()
for value in sys.stdin:
print(sum(map(int, list(value)[:-1])))
💡 흥미로운 코드
import sys
input()
print(sum(map(int, input())))
✏️ 내가 작성한 코드
s = input()
for i in range(0, len(s), 10):
print(s[i:i+10])
✏️ 내가 작성한 코드
for i in range(1, int(input())+1):
print(i)
💡 흥미로운 코드
n = range(1,int(input())+1)
print('\n'.join(map(str,n)))
배열을 만들 때 range로도 만들 수 있다.
✏️ 내가 작성한 코드
n = range(int(input()),0,-1)
print('\n'.join(map(str,n)))
💡 흥미로운 코드
print(* reversed(range(1, int(input())+1)))
파이썬의 Asterisk
- 곱셈 및 거듭제곱 연산
- 리스트 확장
- 가변인자 (Variadic Arguments)
- Unpacking
Reference1 Reference2
✏️ 내가 작성한 코드
value = int(input())
for i in range(1,10):
print(f'{value} * {i} = {value*i}')
✏️ 내가 작성한 코드
m, d = map(int, input().split())
week = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN']
for i in range(1, m):
if i == 2:
d += 28
elif i == 4 or i == 6 or i == 9 or i == 11:
d += 30
elif m == 1:
pass
else:
d += 31
print(week[d%7-1])
💡 흥미로운 코드
m, d = map(int, input().split())
week = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN']
for i in range(1, m):
if i == 2:
d += 28
elif i == 4 or i == 6 or i == 9 or i == 11:
d += 30
else:
d += 31
print(week[d%7-1])
for _ range(1,1)
이면for
문 아래의 코드는 동작 되지 않는다.
즉, 굳이m=1
때를 고려 안 해도 된다.
✏️ 내가 작성한 코드
print(sum(map(int, range(int(input())+1))))
💡 흥미로운 코드
n = int(input())
print((n**2+n)//2)
1부터 n 까지 합 = n(n+1)/2
✏️ 내가 작성한 코드
input()
nums = list(map(int, input().split()))
print(min(nums), max(nums))
💡 흥미로운 코드
import sys
_, *m = map(int, sys.stdin.read().split())
print(min(m), max(m))
문제 2742번에 애스터리스크를 참고하면
*m
에는 N개의 정수 리스트가 담긴다.
그렇기에 따로list
를 만들어 주지 않아도 된다.
또한_
같은 경우, 파이썬에서 사용하지 않는 값에 대한 변수를 지정할 때 사용한다.
✏️ 내가 작성한 코드
for i in range(1, int(input())+1):
print('*'*i)
✏️ 내가 작성한 코드
cnt = int(input())
for i in range(1, cnt+1):
print(('*'*i).rjust(cnt))
✏️ 내가 작성한 코드
for i in range(int(input()), 0, -1):
print('*'*i)
✏️ 내가 작성한 코드
cnt = int(input())
for i in range(cnt, 0, -1):
print(('*'*i).rjust(cnt))
✏️ 내가 작성한 코드
cnt = int(input())
for i in range(1, cnt+1):
print((' '*(cnt-i))+'*'*(i*2-1))
✏️ 내가 작성한 코드
cnt = int(input())
def star(a, b):
s = '*'*a + ' '*(b-a)
print(s + ''.join(reversed(s)))
for i in range(1, cnt+1):
star(i,cnt)
for t in range(cnt-1, 0, -1):
star(t,cnt)
✏️ 내가 작성한 코드
cnt = int(input())
for i in range(1, cnt+1):
print(' '*(cnt-i) + '*'*i)
for i in range(1, cnt+1):
print(' '*(i) + '*'*(cnt-i))
✏️ 내가 작성한 코드
cnt = int(input())
a = 0
for i in range(cnt*2-1, 0, -2):
print(' '*a + '*'*i)
a += 1
a = cnt - 2
for i in range(3, cnt*2, 2):
print(' '*a + '*'*i)
a -= 1
💡 흥미로운 코드
num = int(input())
for n in range(-num+1,num):
print(' '*(num-abs(n)-1) + '*'*(2*abs(n)+1))
절대값을 이용해 값이 줄어들었다가 늘어나는 형식을 출력할 수 있다.
파이썬에서 절대값은abs
를 사용한다.
✏️ 내가 작성한 코드
cnt = int(input())
for i in range(1, cnt+1):
print(' '*(cnt-i), end = '')
for j in range(1, i):
print('*', end = ' ')
print('*')
💡 흥미로운 코드
n = int(input())
s = '* '*n
for i in range(n): print(s[:2*i+1].rjust(n+i, ' '))
✏️ 내가 작성한 코드
n = int(input())
for i in range(1, n+1):
if i == 1:
print(' '*(n-i) + '*')
elif i == n:
print('*'*(n*2-1))
else:
print(' '*(n-i) + '*' + ' '*(i*2-3) + '*')