2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net import sys N = int(input()) num = [] for _ in range(N): num.append(int(sys.stdin.readline())) num2 = sorted(num) for i in num2: print(i) *key point: 2750번 문제와 동일하나 입력 값 N의 범위가 크기 때문에, sys 모듈을 이용하여 시간 초과가 발생하지 않도록 한다.
2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net N = int(input()) num = [] for i in range(N): num.append(int(input())) num2 = sorted(num) for i in range(len(num)): print(num2[i]) *key point: 파이썬의 내장 함수인 sorted()를 이용하여 정렬할 수 있다. 이후 반복문을 이용하여 리스트의 요소를 순서대로 출력한다.
11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net N = int(input()) if N == 1: print('') for i in range(2, N+1): if N % i == 0: while N % i == 0: print(i) N = N / i *key point: 소인수분해의 경우 2부터 불가능할 때까지 반복해서 나누어준 뒤 나누는 수를 1씩 증가시켜 반복하면 하면 배수의 경우가 자연스럽게 사라지므로 쉽게 수행된다.
2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net prime_num = [2] for i in range(3, 10000): for j in range(2, int(i**0.5)+1): if i % j == 0: break else: prime_num.append(i) M = int(input()) N = int(input()) num_list = [] for i in range(M, N+1): if i in prime_num: num_list.append(i) if len(num_list) == 0: print(-1) ..
1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net N = int(input()) num_list = map(int, input().split()) prime_num = [] for num in num_list: if num == 1: continue for i in range(2, int(num ** 0.5) + 1 ): if num % i==0: break else: prime_num.append(num) print(len(prime_num)) *key point: 2 ~ 제곱근까지만 나누어 보는 것만으로도 소수임을 판별 가능하다. for - else문의 활용으로 표현을 간결히..
9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net def check_prime(a): for i in range(2, int(a**0.5) + 1): if a % i == 0: return False if a == 1: return False return True T = int(input()) for i in range(T): n = int(input()) for num in range(n // 2, 1, -1): if check_prime(num) and check_prime(n - num..
10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net A, B = map(int, input().split()) print(A+B) *key point: 변수를 저장할 때 자료형에 따라 정해진 메모리를 사용하는 fixed-precision arithmetic 방식의 경우(ex. C언어) 오버플로우 문제가 발생할 수 있다. 하지만 python3(2022.09.22. 기준)의 경우 int 자료형에도 arbitrary-precision arithmetic 방식이 적용되어 오버플로우가 발생하지 않아 본 문제를 쉽게 풀 수 있다. *reference: https://en.wikipedia.org/wiki/Arbitrary-precis..
2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net N = int(input()) M = 0 while N >= 0 : if N % 5 == 0 : M += (N // 5) print(M) break N -= 3 M += 1 else : print(-1) *key point: 5나 3으로 먼저 나눈뒤 나머지를 생각하면 고려하지 못하는 경우가 발생한다. 따라서 반복문을 이용하여 3씩 감소시키면서 특정 순간 5의 배수로 나누어 떨어지면 break 하도록 한다. break 되지 않고 반복문이 종료되면(=정확하게 N킬로그램을 만들..
1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net M, N = map(int, input().split()) for i in range(M, N + 1): if i == 1: continue for j in range(2, int(i ** 0.5) + 1 ): if i % j==0: break else: print(i) *key point: 2 ~ 제곱근까지만 나누어 보는 것만으로도 소수임을 판별 가능하다. for - else문의 활용으로 표현을 간결히 한다. 반복문에 자주 쓰이는 range의 범위에 유의한다.
4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net while 1: n = int(input()) if n == 0: break cnt = 0 for i in range(n+1, 2*n+1): if i == 2: cnt += 1 else: for j in range(2, int(i**0.5)+1): if i % j == 0: break else: cnt += 1 print(cnt) 처음에는 위와 같은 방식으로 문제를 풀었으나 시간 초과가 발생하였다. input 함수를 sys모듈의 함수로 대체하여도 시간 초..
- Total
- Today
- Yesterday
- til
- 25501
- Python
- MySQL
- 2053
- 벡준
- programmer
- 24723
- 25192
- 항해 플러스
- 4134
- 2587
- 20920
- 17103
- 5597
- 백준
- 2903
- Wil
- 항해+
- 코육대
- 2738
- Programmers
- 24060
- 13241
- 1269
- 26069
- SQL
- 24313
- 13909
- 10807
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |