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모듈의 함수로 대체하여도 시간 초..
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호에 사는 사람의 수로 계속 요소의 값을 변화시켜주었다.
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: 층수와 방번호가 붙는 규칙을 찾는다. 엘리베이터로부터의 거리가 가깝기만 하면 되므로 아래에서 위로 쌓고 다음 방 번호로 넘어가는 식..
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(..
1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net X = int(input()) total = 0 start_num = 0 while X > total: start_num += 1 total += start_num dif = total - X a = 1 + dif b = start_num - dif if start_num % 2 == 1: print(f'{a}/{b}') else: print(f'{b}/{a}') *key point: (1/1) → (1/2 → 2/1) → (3/1 → 2/2 → 1/3) ... 과 같이 대각선을 이루는 분수들을 한 라인이라고 하고, 각 라인에 나타나는 가장 큰 수 를 start_num 이라고 하였다. whil..
2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net N = int(input()) room = 1 num = 1 while N > room: room += 6 * num num += 1 print(num) *key point: 문제에서 규칙을 찾는 것이 가장 중요하다. 시작점 1부터 시작하여 겹마다 6 * 1, 6 * 2, 6 * 3, ... 6 * n 씩 방을 가지고 있다. 이를 활용하면 while문을 이용하여 간단하게 답을 도출할 수 있다.
25304번: 영수증 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것 www.acmicpc.net X = int(input()) N = int(input()) total = 0 for i in range(N): a, b = map(int, input().split()) total += a * b if total == X: print("Yes") else: print("No") *key point: 반복문을 이용하여 주어진 제품 수 만큼의 입력을 받고, 조건문을 이용하여 주어진 값과 비교한다.
3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. www.acmicpc.net standard = [1, 1, 2, 2, 2, 8] found = list(map(int, input().split())) for i in range(6): print(standard[i]-found[i], end=' ') *key point: 리스트를 이용하여 입력값과 정해진 값을 비교할 수 있도록 하고, for문을 이용하여 출력한다.
- Total
- Today
- Yesterday
- 10807
- 백준
- til
- 2587
- Python
- SQL
- 24313
- 벡준
- 4134
- 13241
- 24060
- 1269
- 2053
- Programmers
- 26069
- 17103
- 24723
- 5597
- Wil
- 25501
- 20920
- 25192
- 코육대
- 2738
- 2903
- 항해+
- 항해 플러스
- 13909
- MySQL
- programmer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |