정보처리,전산/코딩 : 문제해결(13)
-
재귀 함수를 사용하여 팩토리얼 을 계산
#include int f(int n) { if (n 호출 순서1. f(7) 호출: - n = 7이므로 7이 반환되지 않고 7 * f(6)으로 계산2. f(6) 호출: - n = 6이므로 6이 반환되지 않고 6 * f(5)로 계산3. f(5) 호출: - n = 5이므로 5이 반환되지 않고 5 * f(4)로 계산4. f(4) 호출: - n = 4이므로 4이 반환되지 않고 4 * f(3)으로 계산5. f(3) 호출: - n = 3이므로 3이 반환되지 않고 3 * f(2)로 계산6. f(2) 호출: - n = 2이므로 2이 반환되지 않고 2 * f(1)으로 계산7. f(1) 호출: - n = 1이므로 1이 반환 이제 각 호출된 함수에서 반환되는 값을 차..
2024.03.12 -
완전수
자신을 제외한 모든 양의 약수의 합이 자기 자신과 같은 수 test 함수는 주어진 숫자 n이 완전수인지 확인 - sum 변수를 초기화 - 1부터 n의 절반까지 반복 n을 각 숫자로 나눈 나머지가 0인 경우에만 해당 숫자를 sum에 더함 이 과정을 통해 n의 약수들을 찾는다. - 반복이 끝나면 sum과 n이 같은지 확인하여 완전수인지를 판단 만약 같다면 1을 반환하고, 아니라면 0을 반환 main 함수에서는 2부터 100까지의 숫자를 반복하면서 test 함수를 호출하여 완전수인지 확인 - 만약 test 함수가 1을 반환하면, 해당 숫자를 sum에 더함 - 반복이 끝나면 sum을 출력 2부터 100까지의 숫자 중 완전수들의 합을 출력 #include int test(int n) { int i, sum = 0..
2024.03.12 -
java. 상속과 생성자 호출에 관한 문법
Child 클래스가 Parent 클래스를 상속하고 있으며 Parent 클래스에는 x라는 인스턴스 변수가 있다. Child 클래스에는 x라는 인스턴스 변수가 또 다른 값을 가지고 있다. 이 때 Child 클래스에서 getX() 메서드를 호출하면 Parent 클래스의 getX() 메서드가 호출된다. 왜냐하면 Child 클래스에 getX() 메서드가 없기 때문이다. 그리고 Parent 클래스의 getX() 메서드는 Parent 클래스의 인스턴스 변수 x를 반환하므로 Child 클래스의 x값이 아닌 Parent 클래스의 x값인 500이 출력된다. 자바에서는 메서드 호출 시 참조 변수의 타입이 아닌 객체의 타입에 따라 메서드가 호출되므로, obj.getX()에서 getX() 메서드는 Child 객체가 아닌 Par..
2024.03.01 -
자연수 N까지 합의 제곱과 제곱의 합의 차이
자연수 1~10 까지 제곱과 제곱의 합의 차이는 3025 - 385 = 2640이다. range(1,100) 은 1부터 99까지 범위이다 range(1,101)로 x에 숫자들을 대입시켜 조건을 반복적으로 실행한다. abs()는 함수의 절댓값을 반환한다. print(abs(sum(range(1, 101))**2 - sum(x**2 for x in range(1,101)))) 출력 25164150
2023.12.31 -
완전수 perfect number
(수학) 자기 자신을 제외한 모든 양의 약수의 총합이 자기 자신이 되는 수. 지금까지 밝혀진 완전수는 모두 짝수 완전수이며 홀수 완전수가 있는지는 밝혀지지 않았다. 완전수가 무한히 많은지도 아직 밝혀진 바 없다. q. 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 찾는 코드 입력으로 자연수 N을 받고 출력으로 N 이하의 모든 완전수를 출력하는 코드 a. inputNum=int(input("숫자를 입력 :")) result = 0 for i in range(1, inputNum+1): for j in range(1,i): if i%j==0: result+=j if result == i: print("%d" % (result)) result = 0 입력 받은 수의 약수를 for문으로 찾고 i%j==0 ..
2023.12.28 -
버전 문자열 비교
input1 = '1.0' input2 = '1.1.99' array1 = input1.split('.') array2 = input2.split('.') for i in range(len(array1)): if int(array1[i])>int(array2[i]): print(input1+'>'+input2) break elif int(array1[i]) '+input1) break 숫자기호숫자기호 순서로 구분된 버전 비교 .을 기준으로 배열을 저장 그러나 버전이 같을 때 버전 길이가 다를 떄는 비교가 되지않기 때문에 SAMPLE =[['0.1.0', '0.1.1'], ['1.1.4','1.1.3'], ['1.1.2','1.1'], ['1.11..
2023.12.28