PS/BaekJoon (105) 썸네일형 리스트형 [C++/1749] 점수 따먹기 ⛔ 단순히 기록용 입니다... 어떻게 풀었는가 생각도 다시 해보고 그러니까 아마도 도움은 안되실 것 같습니다.누적합과 그에 대응하는 행렬크기를 완전탐색으로 문제를 해결했습니다. 누적합은 가장 유명한 DP임. 예전에 사과..어쩌구 문제에서 풀었던 문제와 매우 유사하고, 그 크기만 정의해주면 쉽게 풀리는 문제입니다. 아래는 정답 코드입니다. #include#define MAX 301using namespace std;int n,m, answer = -987654321, board[MAX][MAX], sum[MAX][MAX];void init() { cin >> n >> m; for(int i = 1; i > board[i][j]; } } for(int i = 1; i [C++/13333] Q-인덱스 ⛔ 단순히 기록용 입니다... 어떻게 풀었는가 생각도 다시 해보고 그러니까 아마도 도움은 안되실 것 같습니다.lower_bound를 사용해서 문제를 해결하는데, 범위가 0부터 1000까지 이기 때문에 충분히 해결할 수 있습니다. lower_bound는 시간복잡도 logN이기 때문에 확실히 처리할 수 있습니다. 한 학생이 발표한 총 n ≥ 1 편의 논문 중에서, k번 이상 인용된 논문이 k편 이상이고 나머지 n − k 편의 논문들 인용회수가 각각 k 번 이하라면, 해당 학생의 q-인덱스는 k이다.문제는 이러합니다. k번 이상 인용된 논문이 k편 이상, 나머지 n - k 편의 논문들의 인용회수가 k번 이하라면? q인덱스는 k 이다. 즉 k번이 처음 시작되는 위치를 찾아내면 되는 문제입니다. 아래는 정답 코드.. [C++/24391] 귀찮은 해강이 ⛔ 단순히 기록용 입니다... 어떻게 풀었는가 생각도 다시 해보고 그러니까 아마도 도움은 안되실 것 같습니다.BFS를 이용해서 각 각의실마다 그룹을 나눠서 등록해두면 됩니다. 그 이후, 강의실을 돌아다니면서 몇번 바깥을 나가게 되는지를 알아볼 수 있습니다.아래는 정답 코드입니다.#include#include#include#include#define MAX 100005using namespace std;vector code,adj[MAX];int answer = 0,n,m,lecture[MAX],visited[MAX];void init(){ cin >> n >> m; int from,to; for(int i = 0; i > from >> to; adj[from].push_back(to); adj[.. [C++/17089] 세친구 ⛔ 단순히 기록용 입니다... 어떻게 풀었는가 생각도 다시 해보고 그러니까 아마도 도움은 안되실 것 같습니다.일단 이 문제는 이해부터 해야된다. A친구가 있고 B 친구가 있는데 A와 B는 친구 사이다. 이러면 이차원 배열 또는 벡터를 이용해서 친구 사이를 만들어 줄 수 있고, 그런데 여기서 총 친구들 중에서 세 사람을 골라서 서로를 제외하고 친구 수가 가장 적은 친구 그룹을 구해야한다.그렇다면, 이차원 배열을 이용해서 친구 사이를 유지하면 됩니다. 그리고 친구의 친구가 아니고 셋이 전부 친구여야 한다는 조건을 갖고 있다. 그리고 이러한 조건을 이용해서 전체 인원중 세명을 전부 찾아보면 된다.사람의 수는 4000명이고, 4000 * 4000 * 4000은? 64,000,000,000이 나와서 시간상 처리를.. [C++/23843] 콘센트 ⛔ 단순히 기록용 입니다... 어떻게 풀었는가 생각도 다시 해보고 그러니까 아마도 도움은 안되실 것 같습니다.콘센트가 여러개 존재하고, 그 콘센트를 빠르게 채워넣어야지 빠른 시간안에 충전을 할 수 있을 것이다.비동기처럼 생각해서 문제를 해결했다. 일단 콘센트가 주어지면, 무조건 제일 오래 충전해야하는 애들을 집어넣고 그 뒤에 빈 곳에 넣어주면 됩니다. 근데 빈곳이 없고 전부 차있다면? 제일 적은 시간동안 충전하는 콘센트에 다시 충전하려고 꽂아주면 됩니다.그렇게 계속해서 비교해가면서 충전을 계속한 결과, 가장 긴 충전시간이 걸린 콘센트를 구하면 답이 나옵니다.우선순위 큐를 이용해서 가장 긴 충전시간을 구했고, 배열을 이용해서 계속해서 비교를 했습니다. 아마 더 나은 방법이 존재할 텐데 콘센트의 길이 입력.. [C++/20002] 사과나무 ⛔ 단순히 기록용 입니다... 어떻게 풀었는가 생각도 다시 해보고 그러니까 아마도 도움은 안되실 것 같습니다.요즘 골드 4~5 문제를 푸는데, 이건 저번에 풀었었는데 solved에 로그인하지 않아서 이전에 풀었던 문제였던 것이였다. 하지만, 아주 새로운 방식으로 문제를 해결했다.Dp + 구현으로 문제를 해결했습니다. 일단 N의 크기가 300이고 총 90,000이여도 1000만큼 곱해도 int의 범위를 벗어나지 않으니 상관이 없고, 대신 모든 정사각형의 범위를 다 따져야하기 때문에, 1부터 300까지 (0,0)부터, 전부를 뒤져봐야하기 때문에 단순 for문으로는 어마무시한 시간이 무조건 걸린다 판단해서, Dp인 누적합으로 미리 합을 구해놓고 문제를 해결했습니다. 오랜만에 Dp를 풀어보니까 아주 머리가 안돌.. [C++/1239] 차트 ⛔ 단순히 기록용 입니다... 어떻게 풀었는가 생각도 다시 해보고 그러니까 아마도 도움은 안되실 것 같습니다.이 문제는 굉장히 나에게 어려운 문제였다. 오랜만에 골드 문제를 풀어서 시간이 오래걸린줄 알았는데, 푸는 방법을 세네번은 바꿔가면서 풀이한 것 같다. 처음에는 많은 조건 분기와 같은 문제인 줄 알았다. 왜냐하면 n의 개수가 1부터 8이기 때문에 어떻게 조건을 다 조합하면 풀릴 것 이라고 생각했기 때문인데,예를 들어서 n이 1이라면? 100이기 때문에( n개의 합은 100) 당연히 중앙을 지나가는 선이 없다. 그리고 n이 2라면 50과50 또는 49 51 또는 48 52 이런식으로 나오기 때문에 50이 있다면 1개의 중앙을 지나가는 선이 있다. 근데 이런식이라면? 문제를 해결하는데 굉장히 어려움이 .. [C++/9519] 졸려 ⛔ 단순히 기록용 입니다... 어떻게 풀었는가 생각도 다시 해보고 그러니까 아마도 도움은 안되실 것 같습니다.졸린문제, 이 문제도 몇번의 눈 깜박임 후에 문자열이 바뀌는 문제입니다. 근데 그 눈 깜박임이 1,000,000,000번 까지 가능합니다. 그럼 100억을 다 할 수 있을까요? 절대 그럴 수 없습니다. 이런 문제는 Cycle이 존재하는지 확인하는 겁니다. 그렇다면 문제를 쉽게 해결할 수 있습니다. 그리고 문자열이 변경되는것은 어떤 규칙을 따르고 있는데, 옮겨지는 맨 마지막 index를 파악해야 문제를 쉽게 해결 할 수 있었습니다. 맨 마지막에서 부터 -= 2 씩 index를 옮겨가면서 규칙을 따를 수 있기 때문입니다. 맨 앞은 0부터 시작되기 때문에 상관이 없고, 맨 뒤는 index를 구해야합니다.. 이전 1 2 3 4 5 ··· 14 다음