첫 날인 만큼 크게 어려운 문제들을 풀진 않았고, Python 기초를 복습할 수 있는 문제들 및 수학문제들 위주로 풀어 보았다.
input()은 시간 초과가 뜰 수 있음sys.stdin.readline() 사용하기input을 재정의해서 사용import sys
input = sys.stdin.readline
a = list(map(int, input().split()))
# 입력: 1 2 3
# 결과: a = [1, 2, 3]
import sys
input = sys.stdin.readline
n = int(input()) # 입력: 2
a = [list(map(int, input().split())) for _ in range(n)]
# 입력:
# 1 3 5
# 2 4 6
# 결과: a = [[1, 3, 5], [2, 4, 6]]
sys.stdin.readline()은 입력 끝에 개행 문자 \n을 포함int 함수 사용 시 \n이 무시되므로 문제없지만, 문자열 처리 시 문제가 발생할 수 있음.strip()을 써서 \n을 제거import sys
input = sys.stdin.readline
s = input() # 입력: lgtwins
print(s == "lgtwins") # s = "lgtwins\n" 이므로 False
s = s.strip()
print(s == "lgtwins") # s = "lgtwins" 이므로 True
sys.stdin.readline()으로도 시간 초과가 뜨면 언어를 PyPy로 바꿔서 시도해 보기10^6 정도가 적당import sys
sys.setrecursionlimit(10**6)
print(int('0b110', 2)) # 2진수 110 -> 10진수 6
print(int('0o75', 8)) # 8진수 75 -> 10진수 61
print(int('0x3F', 16)) # 16진수 3F -> 10진수 63
# 해당 함수들은 string을 반환함에 유의
print(bin(6)) # 0b110
print(oct(8)) # 0o75
print(hex(63)) # 0x3f

n으로 계속 나누며 구한 나머지를 역순으로 나열def ten_to_n(x, n):
# 정수값 x를 n진수로 변환
digits = []
digit_char = "0123456789ABCDEF"
while x > 0:
# x를 n으로 나누었을 때 몫과 나머지 반환
x, r = divmod(x, n)
digits.append(digit_char[r])
digits.reverse()
result = "".join(digits)
return result
print(ten_to_n(59, 2)) # 111011
print(ten_to_n(59, 8)) # 73
print(ten_to_n(59, 16)) # 38
n의 제곱수를 곱해 더함def n_to_ten(x, n):
# n진수 값 x를 10진수로 변환
result = 0
digit_dict = {'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15}
for idx, digit in enumerate(x[::-1]):
if digit in digit_dict:
digit = digit_dict[digit]
result += (n ** idx) * int(digit)
return result
print(n_to_ten("111011", 2)) # 59
print(n_to_ten("73", 8)) # 59
print(n_to_ten("3B", 16)) # 59
round 함수를 사용하지 않고도 반올림 처리 가능ratio = 66.666666
print(f"{ratio:.3f}%") # 66.667%
print(f"{round(ratio, 3)}%") # 66.667%
collections.Counter를 이용해 문자열, 리스트 등 iterable 객체의 원소별 개수를 나타내는 딕셔너리를 만들 수 있음a = Counter("123456654456")
print(a)
# Counter({'4': 3, '5': 3, '6': 3, '1': 1, '2': 1, '3': 1})
0을 리턴print(a['4']) # 3
print(a['2']) # 1
print(a['0']) # 없는 키: 0
print(a['ㄹㅇㄹㅇㄹㅇ']) # 없는 키: 0
.most_common() 메서드로 가장 많이 등장한 항목을 정렬해서 볼 수 있음(원소, 개수) 쌍의 리스트를 개수의 내림차순으로 반환print(a.most_common())
# [('4', 3), ('5', 3), ('6', 3), ('1', 1), ('2', 1), ('3', 1)]
print(a.most_common(2)) # 상위 2개만
# [('4', 3), ('5', 3)]