for i in range(3):
print(type(i))
<class 'int'>
<class 'int'>
<class 'int'>
for i in range(0, 20, 2):
print(i)
0
2
4
6
8
10
12
14
16
18
numbers = list(range(1, 11))
print(numbers)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
func(1,2,3,4,5,6,'a','b')
(1, 2, 3, 4, 5, 6, 'a', 'b')
<class 'tuple'>
def keywordpacking(**kwargs):
print(kwargs)
print(type(kwargs))
keywordpacking(a=1, b=2, c=3)
{'a': 1, 'b': 2, 'c': 3}
<class 'dict'>
def print_family_name(*parents, **sibling):
print("아버지 :", parents[0])
print("어머니 :", parents[1])
if sibling:
print("호적 메이트..")
for title, name in sibling.items():
print('{} : {}'.format(title, name))
print_family_name("홍길동", '심사임당', 누나='김태희', 여동생='윤아')
아버지 : 홍길동
어머니 : 심사임당
호적 메이트..
누나 : 김태희
여동생 : 윤아
sys.stdin.readline()은 반복문으로 여러줄을 입력받아야 할 때 사용한다. 한줄 단위로 입력받기 때문에, 개행문자가 입력받아진다.('3' 입력 -> '3\n' 저장) 변수 타입이 문자열 형태(str)로 저장된다.
import sys
a = sys.stdin.readline()
hi
print(a)
hi
print(len(a))
3
import sys
data = list(map(int, sys.stdin.readline().split()))
3 1 2 4
print(data)
[3, 1, 2, 4]
print(len(data))
4
임의의 개수의 정수 n줄을 입력받아 2차원 리스트에 저장할 때
import sys
data = []
n = int(sys.stdin.readline())
2
for i in range(n):
data.append(list(map(int, sys.stdin.readline().split())))
import sys
n = int(sys.stdin.readline())
2
data = [sys.stdin.readline().strip() for i in range(n)]
안녕
나는 누굴까
print(data)
['안녕', '나는 누굴까']
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 연산하는 문제. 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리수를 만든다. 그 이후 주어진 수의 오른쪽 자리수(1의 자리)와 주어진 수의 각 자리의 수를 더한 수의 오른쪽 자리의 수를 이어붙여서 새로운 수를 만든다. 이 방식은 n번만에 원래 수로 돌아온다. 이때 n을 구하시오
풀이
(v1.배열) 주어진 수 a는 문자열로 입력받는다. 원래 a와 연산 뒤의 num이 같아질 때까지 반복하며 횟수를 idx로 저장한다. 같아질 때의 idx의 값을 출력한다.
(v2.수학) 두 자리 정수를 입력받았을 때, 10의 자리의 수는 해당 수를 10으로 나눈 몫이다. 1의 자리 수는 10으로 나눈 나머지이다. 이를 활용하여 더한 숫자를 구한다. 새로운 숫자는 기존의 숫자의 뒷(1의)자리에 10을 곱해 10의 자리로, 더한 숫자의 뒷(1의)자리는 1의 자리로 더하면 새로운 숫자가 만들어진다.
'''
BOJ 1110번 더하기 싸이클 개요
> 주어진 수 a는 문자열로 입력받는다.
> 원래 a와 연산 뒤의 num이 같아질 때까지 반복하며 횟수를 cycle로 저장한다.
> 같아질 때의 cycle의 값을 출력한다.
'''
a = input() # 입력받은 수 a는 문자열
num = "" # 빈 문자열 생성
cycle = 0 # 싸이클 횟수
def plus_digit(n : str) -> str: # 한 자릿수일 때, "0"을 붙여 두 자릿수로 반환
if len(n) == 1 :
n = "0" + n
return n
# 초기 1 싸이클
a = plus_digit(a)
num = plus_digit(str(int(a[0]) + int(a[1]))) # 문자열-> 정수형 -> 연산 -> 문자열
num = a[1] + num[1] # 처음 숫자의 오른쪽 자릿수 + 연산된 숫자의 오른쪽 자릿 수
# 2회 싸이클부터 연산
while a != num : # a과 num가 같지 않을때 반복
num = plus_digit(num)
sum_num = plus_digit(str(int(num[0]) + int(num[1])))
num = num[1] + sum_num[1]
cycle += 1
print(cycle+1) # 초기 싸이클인 1회를 더해준다
cur = num = int(input())
ten = cur // 10
one = cur % 10
cnt = 0
new = (ten + one) % 10
cur = one * 10 + new
cnt += 1
while cur != num:
ten = cur // 10
one = cur % 10
new = (ten + one) % 10
cur = one * 10 + new
cnt += 1
print(cnt)
자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 문제
풀이
백트래킹을 통해 구한다.
import sys
input = sys.stdin.readline
def back_trk():
if m == len(a):
print(" ".join(map(str, a)))
return
for i in range(1, n + 1):
if i not in a:
a.append(i)
print(a)
back_trk()
a.pop()
a = []
n, m = map(int, input().split())
back_trk()