![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dYlTVi/btrMUjT6Yaw/fx8E7nlBdkYMKcknC63UvK/img.png)
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문의 활용으로 표현을 간결히..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bP13g2/btrMU6GuyhW/rsUVFKlKEqO8yP2dwK4ZtK/img.png)
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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/yIMR3/btrMINtMWyM/lpY0lORmYyvQto9aMs9U7K/img.png)
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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Uq0ZL/btrML84iBx1/14cb9MKWIm54oTeHSn9EJ1/img.png)
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킬로그램을 만들..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/tqDih/btrMK2DfzFA/jjnAigP2GAC7GEWGbLfjHK/img.png)
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의 범위에 유의한다.
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bfHY4J/btrMIdlBs5D/NIYwF7xx5R7pBQEowr7dW1/img.png)
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모듈의 함수로 대체하여도 시간 초..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bziqYk/btrL9b2wsOk/CnILCI55HkTEX7LbKzKkq0/img.png)
2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net T = int(input()) for _ in range(T): k = int(input()) n = int(input()) people = [x for x in range(1, n+1)] for _ in range(k): for i in range(1, n): people[i] += people[i-1] print(people[n-1]) *key point: 반복문을 활용한다. 0층의 사는 사람의 수를 리스트로 만든 뒤 k층까지 한층씩 올라가면서 n호에 사는 사람의 수로 계속 요소의 값을 변화시켜주었다.
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bKKwTN/btrLDVT6i7j/077KoyBdgwrMYhflpQ0J8K/img.png)
10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net T = int(input()) for i in range(T): H, W, N = map(int, input().split()) floor = N % H room = N // H + 1 if N % H == 0: floor = H room = N // H print(floor * 100 + room) *key point: 층수와 방번호가 붙는 규칙을 찾는다. 엘리베이터로부터의 거리가 가깝기만 하면 되므로 아래에서 위로 쌓고 다음 방 번호로 넘어가는 식..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/qY4Fo/btrLEGuTamW/7oB9XJjmJeIKlL1PlwRX90/img.png)
2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net A, B, V = map(int, input().split()) if (V - B) % (A - B) == 0 : print((V - B) // (A - B)) else : print(((V - B) // (A - B)) +1) *key point: 정상에 도달하면 달팽이가 내려오지 않는다는 점에 유의하기만 하면 if문을 통해 쉽게 계산할 수 있다. *유의사항: 해당 문제는 시간 제한이 걸려 있다. 아래와 같은 반복문을 통해 코딩하게 되면 input 값이 커질 경우 시간 초과가 발생할 것이다. A, B, V = map(..
- Total
- Today
- Yesterday
- programmer
- MySQL
- 2738
- 25192
- 26069
- 20920
- 2053
- 벡준
- 항해+
- 백준
- 5597
- 24060
- Wil
- 항해 플러스
- Python
- 2903
- 1269
- 24313
- SQL
- 24723
- 코육대
- 13909
- 10807
- 17103
- 4134
- Programmers
- til
- 2587
- 25501
- 13241
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |