C언어; 최대공약수 구하기 총정리 (4가지 방법)1. 최대공약수를 구하는 방법 1) 약수를 이용하여 구하기 2) 두 수의 차이를 이용하여 구하기 3) 유클리드 호제법을 이용하여 구하기 4) 소인수분해를 이용하여 구하기 2. 방법 별 구현 코드 예시 1-1) 약수를 이용한 방법 int a, b, tmp; scanf("%d %d", &a, &b); for (int i = 2; i GCD: b[n+1] b[n+2]==1 -> GCD: 1 ------------------------- b[0] b[1] b[2]=b[0]%b[1] b[3]=b[1]%b[2] ⋮ b[n+2]=b[n]%b[n+1] b[n+2]==0 -> GCD: b[n+1] b[n+2]==1 -> GCD: 1 아래 코드는 위의 구상을 토대로 보기 편하게 작성해 보았다. int a[5] = {}; ..
Flutter; GestureDetector의 onTapUp 오류(onTapDown 유지되는 오류) 해결방법GestureDetector를 사용하던 중 onTapUp과 onTapDown만 사용하던 중 불편한 점을 발견. 불편한 점이 무엇이냐면 보통의 상황에서는 눌렀다 떼면 원하는 기능이 잘 작동한다. 그러나 TapDown상태에서 손가락을 끌어서 나중에 놓는 경우 onTapUp이 작동하지 않음. class MyApp extends StatefulWidget { const MyApp({super.key}); @override State createState() => _MyAppState(); } bool isClickedBtn1 = false; class _MyAppState extends State { @override Widget build(BuildContext context) { return Material..
Flutter; ElevatedButton으로 클릭 효과 구현 (MaterialStateProperty)클릭시 눌리는 효과(버튼이 크기가 약간 줄어드는 효과)를 구현하기 위한 방법. 설명 생략. ElevatedButton( onPressed: () { //TODO: ClickEvent }, style: ButtonStyle( alignment: Alignment.center, shape: MaterialStateProperty.all( RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), ), overlayColor: MaterialStateProperty.resolveWith( (states) => Colors.transparent), padding: MaterialStateProperty.all( const EdgeInsets.symm..
Flutter; Container로 커스텀 애니메이션 (눌림 효과) 버튼 구현하기플러터에서 버튼의 종류는 TextButton, ElevatedButton, OutlinedButton이 세가지이다. 위 세가지 버튼에도 클릭시 기본 효과가 존재하지만, 내가 원하는 느낌은 눌려서 작아지는 느낌이었다. 그래서 두고두고 쓰고자 작성함. 아래 위젯은 Flutter Hooks를 사용하여 작성됨. flutter_hook가 싫다면 걍 useState부분을 setState로 대체해서 사용하면 될듯함. 먼저 flutter_hooks를 프로젝트에 추가 flutter pub add flutter_hooks 아래의 위젯에 사용되는 flutter_hooks의 함수는 useState()이다. 이를 사용하면 statefulWidget을 사용한 코드보다 훨씬 길이가 단축된다. var data = useState(*..
썸네일 python; 정적분을 활용하여 원뿔대 부피 구하기python; 위 원과 아래 원 크기가 다른 원기둥(원뿔대) 부피 구하기 (정적분 회전체 체적 활용) y=f(x)를 x축으로 회전시킨 회전체의 체적을 구하는 공식은 다음과 같다. $V_{x}=\pi\int_{a}^{b}\left\{ f(x)\right\}^{2}dx$ 적분을 계산하기위해 sympy 사용. import sympy as sy import math r1 = float(input('원1 반지름:')) sosomia01.tistory.com 윗 글의 2탄(?)입니다. 이번에는 sympy의 인테그랄을 사용하지 않고 정적분의 값을 사다리꼴로 쪼개서 더하는 방법으로 근사값을 구하였습니다. integrate의 n이 클수록 세분해서 계산하므로 근사값이 정확해집니다. import math def frustu..
썸네일 python; 2차 정방행렬(2X2)의 고윳값(고유치) 구하기고유특성다항식 및 특수한 형태일 때 고유치를 구해보자. Solution1: $A_{2X2}$ 의 고유특성다항식 ⇒ $\lambda^2-trace(A)+det(A)$ Solution2: $A=\begin{bmatrix} a & b \\ c & d \\ \end{bmatrix}$ 행렬 A에서 행 또는 열의 합이 같으면 그 합은 두개의 고유치 중 하나이며, 나머지 하나는 tr(A)가 고유치의 합과 같으므로 tr(A)에서 빼서 구한다. print("⌈a b⌉\n⌊c d⌋\n") a = int(input('a:')) b = int(input('b:')) c = int(input('c:')) d = int(input('d:')) def get_tr(m): res = 0 for i in range(len(m)): r..
썸네일 python; 근의공식 구현하기def quadratic_formula(a, b, c): # ax^2+bx+c=0 x = [0, 0] x[0] = (-b+(((b ** 2)-4*a*c)**0.5))/(2*a) x[1] = (-b-(((b ** 2)-4*a*c)**0.5))/(2*a) return x
썸네일 python; 3 6 9가 포함된 수를 별로 나타내기def digitcf(num): return list(map(int, str(num))) ct = 0 for i in range(1, 50): for j in range(0, len(digitcf(i))): if digitcf(i)[j] == 3 or digitcf(i)[j] == 6 or digitcf(i)[j] == 9: ct += 1 if ct != 0: print(i, "=", "*"*ct) else: print(i, "=", i) ct = 0 def Check369(num): resultV = [] i = 0 while(num != 0): resultV.insert(-i, num % 10) num = num//10 i += 1 return resultV 위 함수는 digitcf와 같은 내용 출력..
썸네일 MathJax 모바일 깨짐 해결방법블로그에 포스팅할 때 수식을 입력하면서 미리 보기로 체크해가며 입력하는데 모바일 화면 미리 보기에서 수식 꺠짐 현상이 발생함. 근데 모바일 환경이 아닐 때는 MathJax로 LaTex 수식을 입력하면 잘만 나타났는데 모바일에서는 LaTex 수식이 그대로 보이는 문제가 발생했다. 그래서 해결하고자 구글링 후 여러 해결방안을 모두 시도해봄. 1. 모바일웹 자동 연결을 사용하지 않음으로 설정 (티스토리) 찾아본 결과 거의 모든 블로그에서 티스토리 같은 경우는 모바일 꾸미기 설정에서 티스토리 모바일웹 자동연결을 사용하지 않는다고 설정하면 해결된다고 한다. 결과: 안됨. 2. 블로그 html에 MathJax를 최신버전으로 사용하는 코드 추가 위 코드는 MathJax의 버전에 상관없이 최신 버전을 사용하는 코드 결..
썸네일 python; 루트 근사값 구하기 (math 사용x, 뉴턴메소드)뉴턴 메소드를 이용한 근사값 구하기.print("√a의 근사값")a = float(input('a='))# f=x**2-a -> f'=2xx = []x.insert(0, a-((a**2-a)/(2*a)))for i in range(0, 5): x.insert(i+1, x[i]-(x[i]**2-a)/(2*x[i])))print(x[4])
썸네일 python; 위 원과 아래 원 크기가 다른 원기둥(원뿔대) 부피 구하기 (정적분 회전체 체적 활용)y=f(x)를 x축으로 회전시킨 회전체의 체적을 구하는 공식은 다음과 같다. $V_{x}=\pi\int_{a}^{b}\left\{ f(x)\right\}^{2}dx$ 적분을 계산하기위해 sympy 사용. import sympy as sy import math r1 = float(input('원1 반지름:')) r2 = float(input('원2 반지름:')) h = float(input('높이:')) if(r1 >= r2): c1 = r1 c2 = r2 elif(r2 > r1): c1 = r2 c2 = r1 obi = (c2-c1)/h x = sy.Symbol('x') f1 = obi*x+c1 res = (math.pi)*sy.Integral(f1**2, (x, 0, h)).doit() print(res)
썸네일 python; 숫자 계단 응용(n까지 늘어났다 줄어드는 계단) 출력n = int(input("n을 입력하세요:")) for i in range(1, (n*2)+1): if(i