논문은 어떻게 쓰는가
·
공부정리
1. 기본 단위부터 잡기논문은 처음부터 길게 쓰려고 하지 말고 Sentence → Paragraph → Section → Paper 순서로 구조를 잡는다.단위기준Sentence1~2줄 정도Paragraph평균 약 7 sentencesIntroduction4~5 paragraphsDiscussion평균 5 paragraphs, 약 4~7 paragraphsAbstract약 8~9 sentences 정도의 구조FigureFigure 하나당 하나의 핵심 메시지가장 중요한 원칙은 Simple is beautiful.한 문장에 여러 주장을 집어넣기보다 한 문장 = 하나의 메시지로 쓰고, 가능하면 2줄을 넘기지 않는다.2. 논문은 Figure부터 시작한다일반적으로 Introduction부터 작성하기 쉽지만, 강의에..
Programmers / 소수 찾기 / C++ - 에라토스테네스의 체
·
coding test - C++/Programmers
*문제 출처는 프로그래머스에 있습니다.문제 제목: 소수 찾기문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/12921 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 나의 풀이#include #include using namespace std;int solution(int n) { int answer = 0; vector arr(n+1,true); // 에라뭐시리 체 가능? arr[0] = false; arr[1] = false; for (int i = 2; i*i 범위 잘 기억하기 까먹으면 큰일난다.
Programmers / 더 맵게 / C++ - 우선순위 큐
·
coding test - C++/Programmers
*문제 출처는 프로그래머스에 있습니다.문제 제목: 더 맵게문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 나의 풀이#include #include #include #include using namespace std;int solution(vector scoville, int K) { int answer = 0; priority_queue,greater> pq; for (int s:scoville){ pq.push(s); } while..
[C++] 배달 - 다익스트라로 구현 (각 거리의 최소 비용 구하기 - 우선순위큐)
·
coding test - C++/기본기문제
https://school.programmers.co.kr/learn/courses/30/lessons/12978 #include #include #include #include using namespace std;// 1번 마을 부터 K시간 이하로 음식을 배달 할 수 있는 경우의 수int solution(int N, vector > road, int K) { int answer = 0; int INF = 1e9; priority_queue, vector>, greater>> pq; vector> maps(N+1,vector(N+1,INF)); vector dist(N+1,INF); for(auto r:road){ int start = r[0]; ..
[C++] 스티커문제 - dp
·
coding test - C++/기본기문제
//스티커가 1개일때 // dp문제는 1개 / 2개 일때 먼저 출력할 수 있으면 출력하자#include #include using namespace std;int solution(vector sticker){ int answer =0; int n = sticker.size(); vector dp1(n,0); vector dp2(n,0); // dp1 14부터 for (int i = 1; i 로직 참고https://sillon-coding.tistory.com/424 Programmers / 스티커 모으기(2) / Python 파이썬*문제 출처는 프로그래머스에 있습니다. 문제 제목: 스티커 모으기(2) (3단계) - 동적 계획법 문제 사이트: https:..
[C++] 땅따먹기 - DP
·
coding test - C++/기본기문제
땅따먹기문제 유형이 문제는 DP(동적 계획법) 문제다.조건은 같은 열을 연속해서 선택할 수 없다는 것이다.같은 행을 계속 밟을 수 없음 ❌같은 열을 연속해서 선택할 수 없음 ✅DP 상태dp[i][j]를 다음과 같이 정의한다.i번째 행에서 j번째 열을 선택했을 때 얻을 수 있는 최대 점수점화식현재 j번째 열을 선택하면 이전 행에서는 j가 아닌 열을 선택해야 한다.dp[i][j] = land[i][j] + 이전 행에서 j가 아닌 열의 최댓값예를 들어 현재 j = 2열을 선택하면 이전 행에서는:0열, 1열, 3열중 하나를 선택해야 한다.초기값첫 번째 행은 이전 행이 없으므로 그대로 저장한다.dp[0][j] = land[0][j];풀이 코드#include #include using namespace std..
[C++] 가장 큰 정사각형 찾기 - DP
·
coding test - C++/기본기문제
문제 유형이 문제는 2차원 DP(동적 계획법) 유형이다.각 칸에서 만들 수 있는 가장 큰 정사각형의 크기를 이전 칸들의 결과를 이용해 계산한다.DP 상태board[i][j]를 다음 의미로 사용한다.(i, j)를 오른쪽 아래 꼭짓점으로 하는 가장 큰 정사각형의 한 변 길이원래 값은 0 또는 1이지만, 계산하면서 DP 값으로 바꿔 저장한다.점화식현재 칸이 0이면 정사각형을 만들 수 없다.board[i][j] = 0현재 칸이 1이면:board[i][j] =min(위쪽, 왼쪽, 왼쪽 위 대각선) + 1코드로는:board[i][j] = min({board[i - 1][j], board[i][j - 1], board[i - 1][j - 1]}) + 1;세 방향 중 하나라도 작으면 ..
[C++] 다이나믹 프로그래밍 - AI 개념 정리
·
coding test - C++/기본기문제
DP(Dynamic Programming) 핵심 정리DP는 이전에 계산한 결과를 저장해두고, 다음 계산에서 재사용하는 방식이다.핵심은 코드를 외우는 게 아니라 먼저dp[i]가 무슨 뜻인지 정의하는 것이다.1. DP 문제 풀이 순서DP 문제를 보면 이 순서로 생각한다.① dp[i]가 무엇을 의미하는가?② 현재 상태에서 어떤 선택이 가능한가?③ 그 선택을 이전/다음 dp와 어떻게 연결하는가?④ 최대값인가? → max 최소값인가? → min 경우의 수인가? → +⑤ 어떤 값이 먼저 계산되어 있어야 하는가? → 반복 방향 결정⑥ 초기값 설정예를 들어:dp[i] = i일까지 얻을 수 있는 최대 수익이라고 정의했다면,오늘 일을 한다오늘 일을 안 한다두 경우를 비교해서:dp[i] = max(한다, 안 한다..
[C++] 이분탐색
·
coding test - C++/기본기문제
기본 로직:정렬이 되어있는 상태에서 start 와 end 의 mid 를 이용하여 target 값 찾기 #include #include #include #include using namespace std;int N = 8;int M = 32;vector arr = {23,87,65,12,57,32,99,81};int binarySearch(int target){ int start = 0; int end = N-1; int mid; while (start target){ // arr 중간 값이 target보다 크다면 end = mid - 1; // 끝점을 옮긴다. } else{ // arr 중간 값이..
[C++] 그래프, 인접행렬, 최단거리 BFS
·
coding test - C++/기본기문제
** pop 과 visited 설정을 잘 하자// 70. 그래프 - 1에서 각 정점으로 가는 최소 이동 거리#include #include #include #include using namespace std;int N = 6;int M = 9;vector ch(N+1,-1);vector> graph = {{1,3},{1,4},{2,1},{2,5},{3,4},{4,5},{4,6},{6,2},{6,5}};vector> tree(N+1);int min(int a, int b){ if (a q; q.push(1); ch[1] = 0; while (!q.empty()){ int idx = q.front(); q.pop(); for (int i = 0;..
[C++] 가중치 경로 문제 정리 - AI정리
·
coding test - C++/기본기문제
그래프 탐색 / 최단거리 알고리즘 정리그래프 문제를 보면 먼저 “무엇을 구하는 문제인지”를 판단해야 한다.문제 특징사용 알고리즘가능한 경로를 전부 탐색DFS연결 요소 / 네트워크 개수DFS / BFS가중치가 없는 최단거리BFS모든 간선 비용이 동일한 최단거리BFS가중치가 0 또는 10-1 BFS양수 가중치 + 한 출발점에서 최단거리다익스트라모든 정점 → 모든 정점 최단거리플로이드-워셜핵심은 다음과 같다.모든 경우를 직접 돌아본다 → DFS몇 번 이동했는지가 중요하다모든 이동 비용이 동일하다 → BFS간선마다 이동 비용이 다르다한 지점에서 최단거리 → 다익스트라모든 노드 사이의 최단거리가 필요하다→ 플로이드-워셜1. 가중치 그래프 저장예를 들어 다음 그래프가 있다고 하자.1 --2--> 21 --5--> ..
[C++] 미로탐색 - DFS 경로 수 구하기
·
coding test - C++/기본기문제
- maps 복사할때 &maps 해서 주소 참조 하는거로 진행하기#include #include #include using namespace std;vector> arr = { {0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 0, 1, 0, 0, 0}, {1, 1, 0, 1, 0, 1, 1}, {1, 1, 0, 0, 0, 0, 1}, {1, 1, 0, 1, 1, 0, 0}, {1, 0, 0, 0, 0, 0, 0}};int answer = 0;void DFS(int x, int y, vector> &maps){ if (x == 6 && y == 6){ answer += 1; return; ..