본문 바로가기

코딩 테스트/백준64

백준 2447번 - 별 찍기 - 10 백준 2447번 - 별 찍기 - 10 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 코드 1. 패턴1(3) => (1,1)의 공백 생성, 주위는 별1개씩 => 크기 : (3,3) 2. 패턴2(9) => (3,3)의 공백 생성, 주위는 패턴1 => 크기 : (9,9) 3. 패턴3(27) => (9,9)의 공백 생성, 주위는 패턴2, 패턴2 주위는 패턴1 => 크기 : (27, 27) 4. 패턴n(3**n) => (3**n/3,3**n/3)의 공백 생성, 주위는 패턴n-1, 패턴n-1.. 2022. 8. 11.
백준 17478번 - 재귀함수가 뭔가요? 백준 17478번 - 재귀함수가 뭔가요? 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 코드 N = int(input()) print('''어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다. "재귀함수가 뭔가요?" "잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어. 마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지. 그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."''') for i in r.. 2022. 8. 10.
백준 10870번 - 피보나치 수 5 백준 10870번 - 피보나치 수 5 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 코드 n = int(input()) num_0 = 0 num_1 = 1 if n == 0: print(0) else: for i in range(n): num_n = num_0 + num_1 num_0 = num_1 num_1 = num_n print(num_0) 결과 2022. 8. 10.
10872번 - 팩토리얼 10872번 - 팩토리얼 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 코드 n = int(input()) fin = 1 for i in range(1,n+1): fin *= i print(fin) 결과 2022. 8. 10.
백준 - 9020번 - 골드바흐의 추측 백준 - 9020번 - 골드바흐의 추측 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 틀린 코드1(시간초과) 혹시나 해서 n의 값에 따른 primes를 따로따로 구했더니 시간 초과가 되었다. def find_primes(n): primes = [] for num in range(2, n+1): do = 'yes' if num 2022. 8. 10.
백준 4948번 - 베르트랑 공준 백준 4948번 - 베르트랑 공준 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 틀린코드(시간초과) import time def prime_num(n): cnt = 0 for num in range(n+1, 2*n+1): do = 'yes' if num 2 * put: break cnt += 1 print(cnt) else: break 결과 2022. 8. 10.
백준 1929번 - 소수 구하기 백준 1929번 - 소수 구하기 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 틀린 코드(시간 초과) M, N = map(int, input().split()) for num in range(M,N+1): devide = [i for i in range(2, int(num**(1/2)) + 1) if num % i == 0] if len(devide) == 0: print(num) 틀린 코드(코드 틀림) import sys def find_prime(M,N): for num in range(M,N+1): if num == 2: print(.. 2022. 8. 9.
백준 11653번 - 소인수분해 백준 11653번 - 소인수분해 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 틀린 코드(시간초과) n = int(input()) def primary(n): primary = [] for i in range(2, n+1): devide = [num for num in range(2,i) if i % num == 0] if len(devide) == 0: primary.append(i) return primary for pri in primary(n): while 1: if n % pri == 0: print(pri) n /= pri else: break 코드 전에는 너무 어렵게 생각하였다. 그냥 2부터 나누어 지는 수가 있으면.. 2022. 8. 9.
백준 2581번 - 소수 백준 2581번 - 소수 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 코드 M = int(input()) N = int(input()) primary = [] for num in range(M,N+1): if num != 1: devide = [i for i in range(2,num) if num%i == 0] if len(devide) == 0: primary.append(num) if len(primary) == 0: print(-1) else: print(sum(primary)) print(min(primar.. 2022. 8. 9.