지나가던 개발자

[Python] 백준 15667번(2018 연세대학교 프로그래밍 경진대회) 문제 풀이 본문

PS/Python

[Python] 백준 15667번(2018 연세대학교 프로그래밍 경진대회) 문제 풀이

KwonYongHyeon 2022. 5. 16. 19:11

 

print(int((-1+(1-4*(1-int(input())))**(1/2))//2))

 

 1줄이긴 하지만 상당히 복잡해보이는 코드인데, 사실 그 내용은 굉장히 간단하다. 바로 대한민국 국민이라면 누구나 알 이차방정식의 근의 공식을 이용한 것이다...! 2a분의 -b 플러스마이너스 루트 b의 제곱 마이너스 4ac...!

 

 우리는 k값을 구해야 하므로 k를 미지수로 한 이차방정식을 세우면, 총 불꽃의 수를 n이라고 했을 때에 처음 쏜 큰 불꽃 1개, 갈라진 중형 불꽃 k개, 중형 불꽃 k개에서 k개씩 갈라졌으므로 k²개가 된 소형 불꽃이 있으므로

 

 1 + k + k² = n, 이항하면,

 

 k² + k + (1-n) = 0. 이렇게 된 식에서 근의 공식을 쓴 것이 위 코드이다.

 

 

 2022년 5월 16일 19시 5분 기준으로 숏코딩 51위를 했다!

Comments