본문 바로가기

Python4

[G4] 백준 1253 - 좋다 (python3) https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 해결방법 투 포인터를 이용해서 문제를 해결할 수 있다. 풀이👀 이번 문제에서 투 포인터를 활용하기 위해선, 반드시 입력되는 배열이 정렬되어야 한다. 왜냐하면 투 포인터의 head와 tail 인덱스로 어떤 값이 나올지 예측해야 하기 때문이다. 만약 target과 비교했을 때, 값이 작으면 head를 +1 해주고, 반대로 작으면 tail을 -1 해주는 식으로 말이다. 곰곰이 생각해보면 이 로직은 이분탐색의 로직과 같다. (이분탐.. 2023. 7. 14.
[S4] 백준 2417 - 정수 제곱근 (python3) https://www.acmicpc.net/problem/2417 2417번: 정수 제곱근 정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오. www.acmicpc.net 해결방법 0과 n(n>=0) 의 중앙값의 제곱이 n과 같은지, 큰지, 작은지를 따져보며 q를 구해내는 해결 방법이다. n과 m의 중앙값의 제곱은 앞으로 'n과 m의 중앙제곱'이라고 부르겠다. 만약 0과 n의 중앙제곱이 n과 같다면 그 값이 정답이다. ( 0과 4의 중앙제곱 = 2, 2^2 = 4) 만약 0과 n의 중앙제곱이 n보다 크다면 mid와 n의 중앙제곱을 비교한다. 만약 0과 n의 중앙제곱이 n보다 작다면 0과 mid의 중앙제곱을 비교한다. 위 조건문 안에서는 low와 high를 업데이트 해주는 작업도 반드시.. 2023. 1. 19.
[S5] 백준 26517 - 연속인가? ? (Python3) https://www.acmicpc.net/problem/26517 26517번: 연속인가? ? 실수 $t$에 대하여, 함수 $f(x)$가 $x=t$에서 정의되어 있고, $\lim_{x \rightarrow t} f(x) = f(t)$인 경우 "$f(x)$는 $x=t$에서 연속이다"라고 한다. 함수 $f(x) = \begin{cases}ax+b & (x \leq k)\\ cx+d & (x > k)\end{cases}$가 주 www.acmicpc.net 해결방법 고등학교 수학 시간에 배웠던 개념을 잊지 않고 있어서 풀 수 있던 문제였다. 주어진 함수가 x=k에서 연속인지 판단하는 방법은 좌극한과 우극한이 같은지 확인하면 된다. 같다면 연속, 다르면 불연속. 코드 k = int(input()) a, b, c.. 2023. 1. 10.
[Python] 백준 2805 - 나무 자르기 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 이해 먼저 문제 이해를 하겠다. 처음에 문제를 읽으면서 무슨 말인가 했다. 절단기가 위에서 아래로 이동하는 건 줄 알았는데, 문제를 다시 읽어보니 아래 그림처럼 가로로 이동을 하는 것이었다! 문제가 요구하는 바는 위 그림처럼 나무를 잘랐을 때, 자르고 남아버린 나무조각(?)들의 높이의 합이 M보다 크거나 같음을 만족하는 H의 최솟값을 구하라는 것이다. .. 2022. 5. 19.