본문 바로가기

C++/공부 정리

(41)
좌표와 배열 착각하지 않기 좌표는 위로 올라갈수록 y가 커지지만,, 배열에서는 그 값이 작아진다. 정확히는 깊어질수록 커진다. 그런데 좌표 문제를 자꾸 배열로 풀면 한참 반대로 푼다. 문제를 풀 때 값은 같고 부호만 반대이길래 한참 찾았다,,
연속 부분 수열 동일한 숫자가 나왔을 때의 연속 부분 수열 i가 0일때를 먼저 조건에 걸지 않으면, map[i] != map[i-1]에서 runtime error가 난다. #include #include using namespace std; int maxCnt = -21e8, map[1000]; int main() { int n, cnt = 0; cin >> n; for(int i=0; i> map[i]; if(i == 0 || map[i] != map[i-1]){ cnt = 1; } else cnt++; maxCnt = max(maxCnt, cnt); } cout
겹치는 지점 구하기 지점을 구하는 법과 구간을 구하는 법은 약간의 차이가 있다. 예를 들어 2,5 에서 5,8의 겹치는 지점은 5부분이다. 그러나 구간을 구한다고 하면 겹치는 구간은 없다. 따라서 지점을 구하는 문제면 (x1, x2) x1부터 x2까지 카운팅 해야하고 구간을 구하는 문제라면 x1부터 x2-1까지 카운팅해야 한다.
진법 전환(진수 to 진수) 10진수에서의 n진수로 전환은 아래와 같이 진행할 수 있다. #include using namespace std; int main() { int N, j, index = 0; int jin[100] = {0,}; cin >> N >> j; while(1){ if(N =0; i++){ cout > a >> b; cin >> n; //10진수 변환 for(int i=0; n.length(); i++){ num10 = num10 * a + (n[i] - '0'); } // 다시 b진수로 변환 int jin[100] = {0, }, index = 0; while(1)..
날짜와 시간 차이 계산하기 만약 1시 40분 부터 6시 45분까지의 지난 분을 계산할 경우 6시 45 - 1시 40이 아닌 0부터 6시 45를 구하고 0부터 1시 40을 구해서 그 값을 빼주는 것이 코드가 훨씬 간결해진다. 날짜도 마찬가지로 1월 1일에서 시작하여 각 날짜까지 총 몇 일이 있는지를 계산하여 그 차이를 계산하는 식으로 진행하는 것이 훨씬 간결하게 코드를 작성할 수 있다.
소수점 표현하기(반올림) double a = 25.145; cout
dp 연습 탑다운과 바텀업 두가지가 대표적인 풀이이며, 설계를 하고 풀어야 수월함. #include using namespace std; int map[6][3] = { 0, 0, 0, 3, 5, -1, 9, -1, 1, 10, 5, 20, -1, 5, 6, 15, 1, 5 }, cal[6][3], direct[3][2] = {1, -1, 1, 0, 1, 1}; int main() { for(int i=0; i=0; i--) { for(int j=0; j
그리디, Dp 현재 순간에서 좋아보이는 것을 선택하는 것은 그리디이다. 즉, 이전의 값에 상관 없이 무조건 현재 상태에서 최선을 선택한다. dp는 이전 값을 사용하여 현재 값을 구하는 것, 현재값은 미래에 사용 백트래킹은 모든 경우를 다 해보는 것 그리디로 동전 최소 사용횟수 구하는 문제에 적용하려면 동전들이 서로 배수와 약수의 관계여야함 ex) 70, 50, 10의 경우에는 불가능하다. #include using namespace std; int main() { int coin, cnt = 0 ; cin >> coin; int num[4] = {500, 100, 50, 10}; for(int i=0; i> e; if(arr[e] < s) arr[e] = s; } for(int i=0; i maxNum) { cnt[i..
vector의 크기 측정 : size 메서드 size 메서드 사용 시 주의할 점이 있다. size()는 음수와의 비교는 불가능 하다. size_t 는 unsigned int이기에 음수와 비교시 0이 나온다. 이것과 비슷하게 string 클래스의 length()도 마찬가지로 음수와 비교시 0이 나온다. 따라서 같은 int 형 자료형으로 변경해주면 큰 문제 없이 수행됩니다. 물론 이 경우에도 int 형 변수보다 더 큰 숫자가 올 경우 문제가 생길 수 있다.
STL queue, vector 연습 queue 익숙해지기 #include #include using namespace std; queue arr; int main() { arr.push(3); arr.push(6); arr.push(1); arr.push(9); arr.push(7); arr.push(7); while(arr.size() > 1) { int temp = arr.front(); arr.pop(); temp *= arr.front(); temp %= 11; arr.pop(); arr.push(temp); } cout