주어지는 저울들로 잴 수 없는 무게 중 가장 적은 값을 구하는 문제 문제의 조건 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있다. 무게가 양의 정수인 N개의 저울추가 주어질 때, 이 추들을 사용하여 측정할 수 없는 양의 정수 무게 중 최솟값을 구하는 프로그램을 작성하시오. 예를 들어, 무게가 각각 3, 1, 6, 2, 7, 30, 1인 7개의 저울추가 주어졌을 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값은 21이다. 입력 첫 째 줄에는 저울추의 개수를 나타내는 양의 정수 N이 주어진다..
A 행렬을 뒤집어서 B 행렬로 만들 수 있을까? 없을까? 있다면 몇 번만에 만들 수 있을까? 를 구하는 문제 문제의 조건 0과 1로만 이루어진 행렬 A와 행렬 B가 있다. 이때, 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하는 프로그램을 작성하시오. 행렬을 변환하는 연산은 어떤 3×3크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 → 1, 1 → 0) 풀이 과정 아이디어 안 떠올라서 구글링을 해 보았는데 정말 친절하게 그림으로 하나하나 설명해 놓은 블로그가 있어 여기를 참고하시면 좋습니다. https://mizzo-dev.tistory.com/entry/baekjoon1080 [백준(baekjoon) 1080] 행렬 [백준(baekjoon) 1080] 행렬 문제 백준 108..
보석 도둑이 보석 가게에서 훔칠 수 있는 보석들의 최대 가격을 구하는 문제 문제의 조건 상덕이가 털 보석점에는 보석이 총 N개 있다. 각 보석은 무게 Mi와 가격 Vi를 가지고 있다. 상덕이는 가방을 K개 가지고 있고, 각 가방에 담을 수 있는 최대 무게는 Ci이다. 가방에는 최대 한 개의 보석만 넣을 수 있다. 상덕이가 훔칠 수 있는 보석의 최대 가격을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci ≤ 100,000,000) 모든 숫자는 양의 정수이다. 출력 첫..
A에서 B로 만드는 데 필요한 최소 연산 횟수를 구하는 문제 문제의 조건 정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다. 2를 곱한다. 1을 수의 가장 오른쪽에 추가한다. A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자. 입력 첫째 줄에 A, B (1 ≤ A < B ≤ 10^9)가 주어진다. 출력 A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다. 풀이 과정 처음엔 DP로 풀 수 있을까 해보다가... 각이 안 나와서 구글링 한 문제 ㅠㅠ 이 문제의 키포인트는 거꾸로 생각하는 것 이었습니다...!!!!! B에서 2로 나누거나 1을 빼고 10으로 나눠가며 A를 만들어 가면서 횟수를 세는 것이었죠... 즉 가능한 경우는 1..
수를 적절하게 묶어서 곱했을 때 구할 수 있는 최대 합계를 구하는 문제 문제의 조건 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다. 하지만, 같은 위치에 있는 수(자기 자신)를 묶는 것은 불가능하다. 그리고 어떤 수를 묶게 되면, 수열의 합을 구할 때 묶은 수는 서로 곱한 후에 더한다. 예를 들면, 어떤 수열이 {0, 1, 2, 4, 3, 5}일 때, 그냥 이 수열의 합을 구하면 0+1+2+4+3+5 = 15이다. 하지만, 2와 3을 묶고, 4와 5를 묶게 되면, 0+1+(2*3)+(4*5) = 27이 되어 최대가 된다. 수열의 모..
0과 1로 이루어진 문자열을 몇 번 뒤집으면 모두 같은 숫자로 만들 수 있는지 구하는 문제 문제의 조건 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 문..
강산이가 캠핑장에서 최대로 머무를 수 있는 일수를 구하는 문제 https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 문제의 조건 1. 강산이가 간 캠핑장은 연속된 P일 중에 L일만 머무를 수 있다. 20일 중에 10일만 머무를 수 있거나 8일 중에 5일만 머무를 수 있거나... 2. 강산이는 이제 막 V일짜리 휴가를 시작했다. 28일짜리 휴가를 시작했거나 15일짜리 휴가를 시작했거나... 3. 여러 테스트 케이스가 5(L) 8(P) 20(V) ..
N개의 숫자 묶음이 주어질 때 숫자 묶음들을 비교하려면 최소 몇 번만 비교하면 되는지 구하는 문제 문제의 조건 1. 정렬된 두 숫자 묶음이 있다. 두 묶음을 각각 A, B라 하면 두 묶음을 비교하는데 필요한 횟수는 A+B번이다. 2. 10장, 20장, 40장 처럼 2개보다 많은 숫자 묶음이 있을 때 2개씩 골라서 비교를 하는데 묶음들을 고르는 순서에 따라서 횟수가 달라진다. 10장과 20장을 먼저 합친 뒤(10+20=30), 남은 40장을 합치는 경우의 수를 더했을 때 (10+20)+(30+40)=100 총 100번의 비교가 필요하다. 하지만 10장과 40장을 합친 뒤(10+40=50), 남은 20장을 합치는 경우를 더하면 (10+40)+(50+20)=120 총 120번의 비교가 필요해서 100번보다는 ..
- Total
- Today
- Yesterday
- 컴퓨터공부
- hackerrank
- 컴퓨터사이언스
- 기초
- BFS
- DFS
- c++
- c언어
- 깊이우선탐색
- 백준
- 영어공부
- 다이나믹프로그래밍
- 해커랭크
- 캐나다생활
- 프로그래머스
- 애플
- 알고리즘
- greedy
- 스위프트플레이그라운드
- 캐나다
- 아이패드
- 그리디
- dp
- 너비우선탐색
- 하드웨어
- 프로그래밍
- 컴퓨터
- 문제풀이
- C언어기초
- 코딩공부
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |