두 차례 실전 코딩테스트를 보며 회고
파이썬 버림 기능을 몰라서 스플릿을 쓰다니 올림 버림 제곱 이런 기본 수학 공식은 외우자
- 올림
round(실수, 표기할 자리수)
round(실수, 2) 는 '실수를 소수 두번째 자리까지 표기하겠다'
소수점 자리수를 지정하고 다시 수로서 계산을 할 목적이시라면 round()num = 3.14159265
print(round(num,1)) #3.1
print(round(num,2)) #3.14
- 버림
f-string 표기법num = 3.14159265
print(f"기존값 : {num}")
print(f"소수점첫번째 : {num : .1f}")
print(f"소수점두번째 : {num : .2f}")
ㄴ 형태 판별 ㅁ 형태 판별 처럼 은근 모양을 판별하는 문제가 많이 나온다 이런류의 문제를 많이 풀어보자
그렇다 나는 비트 shift로 부분집합을 구하는 방식을 다 까먹었다.
- bit shift
arr = [3,6,7,1,5,4]
n = len(arr) #n:원소의 개수
for i in range(1<<n): #000000~111111 #부분집합의 개수
for j in range(n): #원소의 수만큼 비트를 비교
if i & (1<<j): #i의 j번 비트가 1인 경우
print(arr[j], end=",") #j번 원소 출력
print()
- 재귀 + bit
def f(i, N, K): # i 부분집합에 포함될지 결정할 원소의 인덱스, N 전체 원소개수, K 찾는 합
if i==N: # 한개의 부분집합 완성 0000000000~1111111111 인덱스를 1씩 늘리면서 N개와 같아졌다는것은 하나의 부분집합은 완성했다는 의미
# print(bit, end = ' ') 0000000000~1111111111 모든 조합이 출력된걸 확인가능
for j in range(N): # 부분집합 원소의 갯수만큼 반복
if bit[j]: #bit[j] 값이 1이라면
print(a[j], end = ' ')
print()
else:
bit[i] = 1 #bit 조사 처럼 i가 부분집합 원소의 갯수와 같아질때까지 재귀를 돌리면 된다
f(i+1, N, K) #인덱스i를 1씩 증가시키면서 조사 #bit[i]=1 이면 포함
bit[i] = 0 #bit[i]=0이면 미포함
f(i+1, N, K)
return
N = 10
a = [x for x in range(1, N+1)] #[1,2,3,4,5,6,7,8,9,10]
bit = [0]*N
f(0, N, 55)