728x90
백준 알고리즘
11050 이항계수
풀어쓰기
nC2
5 2 하면 10출력
5x4/2
6 3
6*5*4/3*2*1
a *= (n-i)
b *= (k-i)
식으로 나타내기(최종 제출)
a = int(1)
b = int(1)
n, k = map(int, input().split())
for i in range(k) :
a *= (n - i)
b *= (k - i)
print(int(a/b))
처음에 제출할 때 print(int(a/b)) 라고 적지 않고 print(a/b)라고 적어 틀렸다고 나왔었다. 😥
다른 사람들 숏코드를 보는데
import math
a,b=map(int,input().split());print(math.comb(a,b))
이런 코드들이 많았는데
module 'math' has no attribute 'comb' 에러가 떠서 실행을 못했고
다른 코드를 보다가 알게 된 것이 있다.
math 모듈을 불러와서 factorial 함수를 불러와 사용할 수 있다는 것이다..!!
from math import factorial
n, k = map(int, input().split())
a = factorial(n) // (factorial(k) * factorial(n - k))
print(a)
11651 좌표정렬
풀어쓰기
숫자 입력 받음
입력 받은 수대로 좌표 값 받음
y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서
입력 값을 받을 때 x와 y를 같이 변수에 저장해서 정렬을 한 후 같이 띄워야 해서
따로 저장을 하면 안되는데 어떻게 작성을 할지 고민하다가
x와 y를 한꺼번에 저장을 해야하기 때문에 튜플로 저장하기로 했다.
튜플로 입력 값을 쌍으로 저장해서 정렬을 해야하는데
마침 튜플 정렬에 관한 글을 보게 되서 참고하게 되었다.
출력을 할 때는 인덱스를 활용해서 출력 시켰다.
x 오름차순으로 하고 x가 같으면 y를 오름차순으로 적는 줄 알고 제출했다가 문제 다시 보니깐 그 반대였다.
y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서였다.
number = int(input())
a =[]
for i in range(number) :
a.append(tuple(map(int, input().split())))
a.sort(key=lambda x:(x[1], x[0]))
for num in a :
print(num[0], num[1])
위처럼 코드를 제출했더니 시간초과로 떠서 정렬하는 코드를 for문에서 뺐다.
최종 제출
number = int(input())
a =[]
for i in range(number) :
a.append(tuple(map(int, input().split())))
a.sort(key=lambda x:(x[1], x[0]))
for num in a :
print(num[0], num[1])
728x90