민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다. 단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0부터 9까지의 숫자 중 하나로 바꿔서 N개의 수를 합하는 문제이다. 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 숫자로 바뀌어지면 안 된다. 예를 들어, GCF + ACDEB를 계산한다고 할 때, A = 9, B = 4, C = 8, D = 6, E = 5, F = 3, G = 7로 결정한다면, 두 수의 합은 99437이 되어서 최대가 될 것이다. N개의 단어가 주어졌을 때, 그 수의 합을 최대로 만드는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 ..
가장 마지막 마을까지 가는데 필요한 최소 주유 금액을 구하는 문제 문제의 조건 1. 도시의 개수 N이 주어진다. 도시들은 일직선상에 있기 때문에 무조건 맨 앞 도시부터 차례대로 가야 한다. 2. 처음엔 차에 기름이 없기 때문에 맨 처음 도시에서 기름을 넣고 출발해야 한다. 기름통의 크기에는 제한이 없다. 도시 간 도로를 이용하여 이동할 때 1km당 1리터를 사용한다. 3. 각 도시에는 주유소가 하나씩 있으며 각 도시마다 기름 가격이 다를 수 있다. 그렇기 때문에 다른 도시보다 기름 가격이 싼 도시에서 최대한 넣고 가는 것이 이득이다. 4. 각 도시에 있는 주유소의 리터당 기름 가격과 각 도시 간 거리가 주어질 때 마지막 도시까지 가는데 필요한 최소 주유 금액을 구해서 출력하기 풀이 과정 처음엔 기름이 없..
자연수 N개의 수들의 합 S를 만들 수 있는 수들 중 N의 최댓값을 구하는 문제 문제의 조건 1. 수들의 합 S가 주어진다. 2. 자연수 N의 최댓값을 출력한다. 풀이 과정 첨 봤을 땐 뭐 이런 문제가 있나... 했는데 누적합계를 구하면서 나오는 최댓값을 구하면 되나 싶어서 누적합계를 구해 봤습니다. 근데 애매하게 틀린 숫자가 나오고 문제 자체도 이해가 잘 안 가서 힌트를 찾아봤습니다. 문제 이해 후 정리된 풀이 1. 누적합계를 구하는 방식으로 접근하는 것은 맞다. 2. 하지만 모든 수가 연속된 숫자일 필요는 없다. S = 5 라면 [1,1,1,1,1] 로도 5를 만들 수 있다. 이 경우엔 N개의 자연수 중 최댓값은 1이라고 할 수 있지만 유일하게 1만 있는 것이 아니다. 5를 만들기 위해서 1을 다섯번..
진영 주식회사의 신입 사원 선발을 도와주는 문제 문제의 조건 1. 진영 주식회사는 신입 사원 지원자들의 서류 점수와 면접 점수를 매겼다. 2. 진영 주식회사에서 신입 사원을 선발하는 기준은 어떤 지원자가 다른 지원자보다 적어도 한 가지는 더 높은 순위를 받아야 한다는 것이다. 서류 점수라도 더 높던가 면접 점수라도 더 높던가 그렇지 않고 둘 다 다른 지원자보다 낮으면 탈락 3. 테스트 케이스가 여러 개 주어질 때 각 케이스별로 최대한 많이 선발할 수 있는 신입 사원의 수를 구해서 출력하기 풀이 과정 처음엔 서류 점수를 기준으로 오름차순 정렬을 하면 되겠다 까지는 생각을 했는데 그 뒤로 비교 조건을 어떻게 해야할 지 감이 잘 안 와서 힌트를 봤습니다. 과정 1. 지원자들의 점수를 pair 구조체를 이용해서..
각각 견딜 수 있는 중량이 다른 로프들을 이용해서 들 수 있는 최대 무게를 구하는 문제 문제의 조건 1. N개의 밧줄이 주어진다. 2. 이 밧줄들은 각각 동일한 무게로 나눠서 한 물체를 들게 된다. 100kg 짜리 물체를 4개의 밧줄로 나눠 든다면 25kg씩 나눠 든다. 3. 모든 밧줄을 사용하지 않아도 되고 가장 많은 무게를 들 수 있는 밧줄 몇 개만 골라서 써도 된다. 4. 주어진 밧줄들을 이용해서 가장 많이 들 수 있는 무게를 출력하기 풀이 과정 처음에는 단순하게 밧줄 중 최솟값을 구해서 모든 밧줄의 갯수만큼 곱하면 되겠다고 생각했습니다. 하지만 실패 ㅠ.ㅠ 그러고 다시 생각해 보니까 1kg 짜리만 5개 있다가 100kg 짜리 하나 있으면 100kg 짜리 하나만 썼을 때 가장 많이 들 수 있으니까 ..
거스름돈에 포함되는 잔돈의 갯수가 몇 개인지 구하는 문제 문제의 조건 1. 1원 이상 1000원 미만의 지불해야 하는 금액이 주어진다. 2. 잔돈의 종류는 500, 100, 50, 10, 5, 1원이 있다. 2. 1000원 짜리를 냈을 때 받을 거스름돈에서 각 잔돈을 몇 개를 써서 받으면 최소로 받는지 구해서 출력 풀이 과정 앞서 풀었던 몇 문제와 비슷하게 남은 돈에서 가능한 가장 큰 액수의 잔돈을 먼저 뺀 다음에 그 다음 작은 액수의 잔돈과 비교해서 또 빼고 하는 방식으로 잔돈의 갯수를 구했습니다. #include #include using namespace std; int main(int argc, const char * argv[]) { int N; cin >> N; vector changes{50..
세준이는 +, -와 괄호를 이용해서 식을 만들었는데 실컷 만들고 나서 괄호를 지워버렸다. 근데 세준이는 괄호를 다시 쳐서 이 식의 최솟값을 구하고 싶어짐... 괄호를 적당히 쳤을 때 얻을 수 있는 최솟값을 구하는 문제 문제의 조건 1. +와 -로 구성된 식이 문자열로 주어진다. 2. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 3. 두 개 이상 연속해서 연산자(+, -)가 나타나지 않으며 5자리보다 많이 연속되는 숫자도 없다. 4. 식에서 얻을 수 있는 최솟값을 구해서 출력 풀이 과정 처음 문제를 봤을 땐 풀이가 떠오르지 않아서 10분정도 고민하다가 질문 게시판을 봤습니다. 거기서 -를 만나면 그 이후로 나오는 숫자는 모두 뺀다는 말을 보고 풀이..
S = A[0] × B[0] + ... + A[N-1] × B[N-1] 위와 같이 정의된 함수 S가 주어진다. A와 B 배열이 주어질 때 S의 최솟값을 구하는 문제 문제의 조건 1. 두 배열의 길이 N이 주어진다. 2. N은 50보다 작거나 같은 자연수이고 A, B의 각 원소는 0보다 크거나 같고 100보다 작거나 같은 양의 정수이다. 3. B는 정렬하면 안 되고 A만 정렬해서 S의 최솟값을 구해서 출력하기 풀이 과정 처음 문제를 읽었을 땐 A 배열을 정렬해서 풀어야 할 것 같지만 예제를 자세히 보면 정렬할 필요가 없다는 것을 알 수 있습니다. A의 첫번째 최솟값과 B의 첫번째 최댓값을 곱한 값에다 A의 두번째 최솟값과 B의 두번째 최대값을 곱해서 첫번째로 구한 값에 더해주고 A의 세번째 최솟값과 B의 ..
- Total
- Today
- Yesterday
- 애플
- 다이나믹프로그래밍
- c언어
- 캐나다생활
- 알고리즘
- C언어기초
- 캐나다
- c++
- 깊이우선탐색
- 컴퓨터
- dp
- 그리디
- 문제풀이
- 컴퓨터공부
- 컴퓨터사이언스
- DFS
- 기초
- 아이패드
- 너비우선탐색
- 해커랭크
- 영어공부
- 프로그래머스
- 스위프트플레이그라운드
- 하드웨어
- BFS
- 코딩공부
- greedy
- 프로그래밍
- hackerrank
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |