세준이는 +, -와 괄호를 이용해서 식을 만들었는데 실컷 만들고 나서 괄호를 지워버렸다. 근데 세준이는 괄호를 다시 쳐서 이 식의 최솟값을 구하고 싶어짐... 괄호를 적당히 쳤을 때 얻을 수 있는 최솟값을 구하는 문제 문제의 조건 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의 ..
아주 전형적인... BFS로 최단 거리를 찾는 문제 문제의 조건 1. N x M 크기의 미로가 주어진다. 2. 미로의 [1, 1]에서부터 [N, M]까지 가는 최단 거리를 구해서 출력하기 => 미로 배열의 [0, 0]에서부터 [N-1, M-1]까지의 최단 거리를 구하면 된다. 풀이 과정 많이 보던 스타일이라 낯설진 않았고 BFS 알고리즘도 어느정도 익숙해서 금방 풀 수 있을 것이라 생각했지만... 여전히 백준 문제의 입력을 받는 것에 익숙하지 않았기 때문에 입력을 받는 과정에서도 착오가 있었고... 최단 거리를 구하는 식을 잘못 썼고... 등등의 이유로 오래 걸린 문제입니다. ㅠ.ㅠ 그래도 덕분에 이젠 확실하게 알겠습니다... 근데 문제에 입력되는 숫자가 붙어서 주어진다 이런 말 말고 string형 배열..
회의실 한 개로 최대한 많은 회의를 하려고 한다. 각 회의가 겹치지 않으면서 최대한 많이 할 수 있는 회의 수를 찾는 문제 문제의 조건 1. 총 회의 갯수 N이 주어진다. 2. 다음 줄부터 각 회의의 시작 시간과 종료시간이 주어진다. 3. 가능한 회의의 최댓값 출력 풀이 과정 현재 진행 중인 회의의 종료 시간보다 다음 회의의 시작 시간이 같거나 크다면 정답 수에 포함시키는 방식으로 코드를 짰습니다. 하지만... 처음엔 예제의 답이 마치 정렬을 하지 않고 주어진 순서 그대로 푸는 것 처럼 보여서... 정렬을 하지 않은 상태로 위의 알고리즘을 적용했더니 틀림 ㅠ.ㅠ 예제를 보면 아시겠지만 정렬을 하지 않는다고 충분히 오해할 만한 내용이지 않나요???? 내가 아직 경험이 짧아서 그런 것인지..흑흑 암튼 또 질..
준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 문제의 조건 1. 준규가 가진 동전의 개수 N, 만들어야 하는 금액 K가 주어진다. 2. 둘째 줄부터 동전의 가치가 오름차순으로 주어지는데 i ≥ 2인 경우에 Ai는 Ai-1의 배수 풀이 과정 동전의 최솟값을 구해야 하니까 가지고 있는 금액 중 가장 큰 금액부터 빼 나가면 된다고 생각했습니다. 그래서 그렇게 금방 코드를 짜고 예제도 통과가 잘 되고 반례도 통과가 잘 됐는데도 계속 틀렸다고 하는 것입니다. ????? 모징...ㅠㅠ 또 한시간정도 게시판을 헤매다가 문제를 알게 되었습니다. 전 처음에 준규..
제목 그대로 DFS와 BFS로 그래프를 탐색한 결과를 출력하는 문제 문제의 조건 1. 주어진 그래프를 DFS와 BFS로 각각 탐색한 결과를 순서대로 출력하면 된다. 2. 단, 방문할 수 있는 정점의 개수가 여러 개면 정점의 수가 작은 것 부터 방문한다. 풀이 과정 처음에는 요즘 알고리즘을 공부하고 있는 책에 나와 있는 알고리즘을 썼는데... (대충 엣지 좌우 저장하는 구조체 만들고 전체 그래프를 구성하는 클래스를 만든 뒤 그렇게 만들어진 그래프 클래스를 이용해서 bfs와 dfs를 수행하는 내용 코드 길이가 A4 한 장 정도 됨) 알고 보니 모든 정점이 서로서로 연결되어 있다는 것을 전제로 한 알고리즘이라 이번 문제에는 맞지 않았습니다. 주륵 ㅠ.ㅠ 그리고 제게는 그것을 수정할 능력이 없었습니다...ㅋㅋㅋ..
ATM이 한 대 밖에 없는 은행에서 N명의 사람들이 차례대로 줄을 서서 돈을 뽑을 때, 모든 사람들이 돈을 뽑는데 걸리는 시간의 최솟값을 구하는 문제 문제의 조건 1. 돈을 뽑으려는 사람들의 수 N, N명의 사람들이 각각 돈을 뽑는데 걸리는 시간을 나타낸 배열이 주어짐 (둘째 줄에 주어지는 것이라 실제로는 반복문 돌리면서 배열에 값 입력받기) 2. 사람들이 각각 걸리는 시간은 다 다른데 사람들이 뽑는 순서에 따라 최종적으로 걸리는 시간의 합계가 달라진다. 3. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 ..
권투 선수들의 승패에 따른 순위를 매겨야 하는데 몇몇 경기 결과는 분실되었다. 경기 결과를 확실하게 알 수 있는 선수들만이라도 추려보려고 하는데 순위를 정확하게 매길 수 있는 선수가 몇 명인지 구하는 문제 문제의 조건 1. 선수의 수 n, 경기 결과를 담은 2차원 배열 results가 주어짐 2. results 배열의 각 행 [A, B]는 A 선수가 B 선수를 이겼다는 뜻이다. 3. 모든 경기 결과에는 모순이 없다. 아직 그래프에는 많이 약하기 때문에 힌트를 봤는데 플로이드-와샬 알고리즘을 이용하면 쉽게 풀린다고 해서 무엇인지 찾아보았습니다. 플로이드-와샬 알고리즘 최단 거리를 구하는 그래프 알고리즘 중 하나 모든 쌍을 표현하는 행렬(2차원 배열)을 이용해서 다이나믹 프로그래밍 방식으로 각 정점간의 최단..
- Total
- Today
- Yesterday
- 캐나다
- 하드웨어
- greedy
- c++
- c언어
- 기초
- 프로그래밍
- 문제풀이
- 컴퓨터
- 코딩공부
- 해커랭크
- C언어기초
- 다이나믹프로그래밍
- 너비우선탐색
- 알고리즘
- 영어공부
- 애플
- DFS
- 프로그래머스
- 캐나다생활
- BFS
- 컴퓨터사이언스
- 백준
- 아이패드
- 컴퓨터공부
- 깊이우선탐색
- dp
- 스위프트플레이그라운드
- 그리디
- 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 |