본문 바로가기

1Day 1Algo

[1Day 1Algo] 백준 1110번 더하기 사이클 (Python) https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 이 문제를 처음 본 순간 떠오른 풀이 방법은 문자열 인덱싱이다. 해당 코드는 아래와 같다. Code n = input() if len(n) == 1: n = "0" + n result = n cnt = 0 while (True): temp = str(int(result[0]) + int(result[1])) result = result[1] + temp[-1] cnt += 1 if .. 더보기
[1Day 1Algo] 백준 12865번 평범한 배낭 (C++) 알고리즘 개요 냅색(Knapsack) 알고리즘 : 배낭의 용량이 정해져 있을 때, 최대한의 가치 를 갖도록 배낭을 싼다. 주어진 물건들의 용량과 가치를 고려하여 담을지 말지 결정한다. 풀이 과정 Example) 물건의 수(N) = 4, 배낭의 용량(K) = 7 물건 물건 1 물건 2 물건 3 물건 4 무게 6 4 3 5 가치 13 8 6 12 1) 각각의 물건에 대한 최대 가치를 판별할 수 있도록 DP[K] 를 만든다. 2) 물건을 넣을지 말지의 경우를 모두 저장하며 구한다. a) 현재 배낭의 허용 무게보다 넣을 물건의 무게가 더 크다면 넣지 않는다. b) 그렇지 않다면, 다음 중 더 나은 가치를 선택하여 넣는다. DP[j] = max((DP[j-현재 물건 무게]+현재 물건 가치), DP[j]) b-1).. 더보기
[HackerRank] Python (Basic) Certificate 1) average function 1개 이상의 가변적인 인자를 avg 함수에서 받은 후 해당 인자들의 평균을 출력하는 문제였다. Python에서는 * 를 사용하면, 가변적인 인자를 받을 수 있다. 해당 인자들은 tuple 로 감싸진다. def avg(*nums): return sum(nums)/len(nums) 2) string-representation-of-object 먼저, 케이스 개수 N이 주어진다. N에 맞춰 Boat의 경우 max_speed만, Car는 max_speed와 speed_unit 이 입력된다. 입력을 다 받은 후에는 다음과 같이 출력하면 된다. Boat의 경우, "Boat with the maximum speed of {} knots".format(max_speed) Car의 경.. 더보기
[1Day 1Algo] 백준 4948번 베르트랑 공준 (C++) [단계별로 풀어보기 > 기본수학2] 에서 만난 문제다. 앞선 문제들이 모두 소수와 관련된 문제들이었다. 그래서 이 문제도 쉽게 해결할 수 있겠다는 생각이 있었으나, 2시간이나 걸리고 말았다. 이 문제는 1 더보기
[1Day 1Algo] 백준 11653번 소인수분해 (C++) 해당 문제를 보고 처음에는 "2부터 N-1까지 나눠주면 되겠지~" 라고 생각했다. 그러나 혹시 놓치고 있는 소인수분해에 대한 개념이 있을 수 있어검색을 했다. 눈에 띄는 부분은 소수로 자연수를 나누는 것 이었다. 그래서 처음 생각했던 개념을 조금 발전시켰다. "2부터 N-1까지 소수인 수로 나눠줘야지~" 그리고 아래와 같은 방식으로 코드를 작성했다. 그러나 시간제한에 걸려 틀렸다. #include #include using namespace std; bool isPrime(int x) { for (int i = sqrt(x); i > 1; i--) { if (x % i == 0) return false; } return true; } void primeFactorization(int x) { for (.. 더보기
[1Day 1Algo] 백준 1712 (C++), 1193 (C++) # 백준 1712번 : 손익분기점 (https://www.acmicpc.net/problem/1712) Code : #include using namespace std; int main(void) { long a; int b, c; cin >> a >> b >> c; if (c - b > 0) cout x; for (i = 1; i= x) break; } temp = x - (sum - i); if (i%2 == 0) cout 더보기