안녕하세요 1-J 9375번 문제를 푸는데 계속 컴파일이 안돼요. devc++ 사용하고 있는데요, 강사님 코드로 컴파일 해도 오류가 나요. 뭐가 문제일까요? http://boj.kr/b8ffa79b7bbc43a7b291d205f9015698 for(auto c : _map) 이 부분에서 [Error] 'c' does not name a type 이런 오류가 떠요.
안녕하세요 큰돌님. 매번 좋은 강의 잘 듣고 있습니다. 수빈이의 좌표가 100,000으로 주어졌을 경우 *2 한 200,000까지 처리할 수 있도록 코드를 작성했다고 생각하는데, 계속해서 메모리 초과 로 실패합니다.. 혹시 제가 미쳐 신경쓰지 못한 부분이 있다면 지적해주시면 감사하겠습니다. http://boj.kr/094b02dd883548a88d9ca6d3fa2261cb
2. myflags 0000 option4 0001 option5 0010 으로 가정했을 때, 첫번째 문제는 괄호안에 있는 것을 먼저 계산하면 0011 에서 ~(not)이니, 1100입니다. 두번째 문제는 연산자 우선순위로 각각에 ~을 먼저 계산 후 &를 풀면되는 데, 1110 & 1101으로 결과는 1100이 되니 결국 정답은 같습니다!
안녕하세요 선생님! 강의 항상 잘 보고 있습니다. 저는 이 문제 예외처리를 합해서 생각한 게 아니라 나눠서 비교해도 될 것 같아서 그렇게 로직을 짰는데, 실패했고 '내 코드보기'를 하면 Error를 뱉고 있더라고요 혹시 어떤 문제일까요? 강의 보고 합한 걸로 처리하니까 통과 됐고, 합해서 하는 게 더 좋은 거라는 생각은 했는데, 나눠서 생각한 게 왜 틀린지를 잘 모르겠습니다. 33~36 line 입니다. 링크 첨부합니다~ https://www.acmicpc.net/source/57441252
안녕하세요 큰돌님! 다름이 아니라 1-K를 이런 식으로 풀어봤습니다. 하지만 자꾸 틀리는데 반례를 못찾겠어서 질문 드려봅니다. <코드 설명> 저 같은 경우 map을 이용해 <한 문자, 문자 개수>를 만들어 개수가 홀수인 문자가 2개 이상이면 "I' m sorry Hansoo"를 출력하며 종료하고 그 외에는 팰린드롬을 만듭니다. 팰린드롬은 다시 문자의 개수가 홀수인 문자가 존재하는 경우와 아닌 경우로 나뉘는데, 존재하는 경우 tmp에 잠시 저장해놓고 나머지는 ret에 철자순으로 저장합니다 그리고 tmp를 ret에 붙인 다음에 substr로 해당 문자열을 복사한 뒤 temp에 저장합니다. 마지막으로 temp를 reverse로 역순배치를 하여 ret에 이어붙입니다. 최종적으로 이를 출력하는 로직입니다. (문자의 개수가 모두 짝수인 경우는 tmp를 ret에 붙이는 과정만 없고 나머진 동일합니다) 정말 열심히 생각해서 풀었는데 왜 틀렸는지 조차 몰라서 매우 속상합니다... 반례나 틀린 부분이 어디인지 알려주신다면 정말 정말 감사하겠습니다...! #include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); map<char, int> mp; string word, ret; bool isOdd = false; int cnt = 0; char tmp; cin >> word; for(int i = 0; i < word.size(); i++) { mp[word[i]]++; } for(auto it : mp) { if((it).second % 2 == 1) { cnt++; if(cnt > 1) { cout << "I'm Sorry Hansoo"; break; } tmp = (it).first; isOdd = true; for(int i = 0; i < (it).second / 2; i++){ ret += (it).first; } } else { for(int i = 0; i < (it).second / 2; i++){ ret += (it).first; } } } string word2 = ret; if(isOdd) { word2 += tmp; string temp = ret.substr(0, temp.size() - 1); reverse(temp.begin(), temp.end()); word2 += temp; } else { string temp = ret.substr(0, temp.size()); reverse(temp.begin(), temp.end()); word2 += temp; } if(cnt < 2) cout << word2; return 0; }
알고리즘 교안 33p a.find("love") 부분에 대한 이해가 맞는지 질문드립니다. it = a.find("love") 에서 it 값이 love가 있다라고 결정되면 it != string::npos -> string::npos(string이 없다)와 값이 같지 않아서 있다고 인정된다 맞을까요? C언어에 대한 기초 강의를 듣고 시작해도 조금 버겁네요ㅜㅜ
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
포인터 실습 강의를 다 보고 연습할 겸 플레이어를 만들고 플레이어가 레벨업을 할 경우 영구적으로 스탯이 증가하는 것을 만드려고 하는데 생각대로 안되더군요.. 포인터만 사용해서는 만들 수 없는 건가요? struct statinfo { int hp; int atk; int def; }; void player(statinfo* playerinfo) { playerinfo->hp = 300; playerinfo->atk = 30; playerinfo->def = 20; } int playerup(statinfo* abc) { int up = (abc->hp) + 12; cout << up << endl; return up; } int main() { statinfo playerstat; statinfo* playerstatPTR = &playerstat; player(&playerstat); cout << playerstat.hp << endl; cout << playerstatPTR->hp << endl; playerup(&playerstat); }
안녕하세요? Jetson TX2 및 Xavier를 사용하여 CUDA예제를 실행하고 있습니다. Block 예제에서 tx2와 xavier의 결과가 달라서 질문드립니다. dimgrid<<<2,2,1>>>에 의해 Block의 갯수가 4개가 되고, warpid=0인 영역은 blockid가 (0,0), (1,0), (0,1), (1,1)인 곳에서 총 4개가 있을 것입니다. 하지만 Tx2에서 예제를 돌려본 결과 blockid가 (0,0), (1,0)인 곳에만 나옵니다. 혹시나 해서 xavier에서 실험을 해본 결과 총 4개가 나와 정상적으로 출력됩니다. CUDA언어는 GPU구조와 상관 없이 출력되기 위해 grid-block-thread 구조를 가지므로 속도는 느리지만 동일한 결과를 출력해야하는데, 왜 tx2와 xavier가 같은 예제를 돌렸는데도 다른 결과가 나오는걸까요? (혹시나 해서 <<<2,2,1>>> => <<<4,1,1>>>로 변경하여 돌려봤지만 여전히 tx2에서 blockid 2개만 출력되었습니다.)
printcolorName 함수를 switch case 구문으로 구현해놓고, main 함수에서 int 형태의 입력 x를 받아 printcolorName(x) 함수를 돌렸는데요. C2664(인수 타입변환 에러)가 발생합니다. 인수 x 를 printcolorName함수 입력 자료형인 COLORS로 형변환 하고, printcolorName 함수 내에서 switch case 구문을 이용하기 위해 다시 이 인수를 int로 형변환 하니 정상 실행되네요. 강의에서 알려주신 대로 case에 COLOR 자료형을 직접 넣는것과 별개로, 이렇게 형변환을 거듭해서 사용해도 문제는 없나요? 강의에서는 main 함수에서도 int 형 인수가 아닌 COLORS::BLACK를 써서 간단한 것 같긴 한데요.. #include <iostream> using namespace std; enum class COLORS{ BLACK, WHITE, RED, GREEN, BLUE, }; void PrintColorName(COLORS color) { /*if (color == COLORS::BLACK) cout << "Black" << endl; else if (color == COLORS::WHITE) cout << "White" << endl; else if (color == COLORS::RED) cout << "Red" << endl; ...이런식으로 모든 경우에 대해 else if 쓰는 건 너무 불편 이때 switch case 문 활용*/ switch (static_cast<int>(color)) { case 0: cout << "Black"; break; case 1: cout << "White"; break; case 2: cout << "Red"; break; case 3: cout << "Green"; break; case 4: cout << "Blue"; break; } } int main() { //PrintColorName(COLORS::BLACK); int x; cin >> x; PrintColorName(static_cast<COLORS>(x)); return 0; }
if문 조건부에 constant 1을 넣어서 무조건 실행되게 하면, if문 전 main 함수에 의해 int x=10이 설정되고 cin으로 임의 입력값을 받는데요. 이 다음에 if문이 실행되면, 또다시 int x =5를 선언하는데 왜 에러가 안나나요? 같은 변수명 x를 중복선언하는 것 아닌가요? if문 안의 실행부가 x=5이면 이전에 선언해놨던 x에 값만 5로 대입하는 것으로 이해가 되는데요. 새로 int x를 또 선언하는데 중복에러가 안나는 이유가 궁금합니다. 아래는 그 코드입니다. #include <iostream> using namespace std; int main() { int x=10; cin >> x; if (x > 10) cout << x << " is greater than 10" << endl; else cout << x << " is not greater than 10" << endl; cout << endl; if (1) int x = 5; else int x = 6; cout << x << endl; return 0; }
안녕하세요!! 이 문제 해설 코드를 보다가 궁금한 점이 생겨서 질문 드립니다. 상어가 이동하고 한칸에 두마리가 있을 때 큰 상어가 나머지 상어를 먹는 부분인데요, 제가 잘못 이해하고 있는 건가 싶은게 있습니다. 코드 67번째 줄 부분인데요. # i는 1부터 M까지 if(temp[ny][nx]) { if(a[temp[ny][nx]].z < a[i].z) { a[temp[ny][nx]].death = 1; temp[ny][nx] = i; } else a[i].death = 1; } else temp[ny][nx] = i; 이때 i가 1인 경우에도 이미 상어가 있는 곳으로 이동하는 경우도 있을 수 있지 않나요? 제가 잘못 이해하고 있는건지.. 고민하다가 질문드립니다. 감사합니다!
5-H 풀이 강의 투포인트 개념적용되는 문제로, 중복되는 숫자가 나올때까지 e 를 증가시키고중복되는 수가 나오면 s 를 증가시키는 개념인 것은 이해를 했습니다만, s/e 가 변화해가면서 실질적으로 경우의 수를 산출하는 디테일한 부분에서 설명하신 내용만으로는 이해되지 않는 부분이 있어 질문 남깁니다. 4:41 경에 1을 포함하는 집합을 다 빼야한다고 말씀해주셨는데요. 말씀하신 문맥 흐름 상으로만 보면 경우의수에서 뺀다는 뜻으로 이해가 될 수가 있을 것 같습니다. 코드상 ret 에는 아래와 같이 더해주는데 ret+=(e-s); 뺀다는 표현이 어떤 의미인지 확인 부탁드립니다. 코드 기반으로 제가 이해한 것은 e = 3, s = 0 인 경우 (e-s) = 3 이고, 1 / 12 / 123 에 대한 경우의 수를 ret 에다가 더해주는 것으로 저는 이해했습니다. 4:59 경에 s=1 이 되면서 "이 구간(=갈색구간?)" 이 완성되는거 라고 하셨는데, s 가 0 에서 1 이 되면서 비로소 2 / 3 / 1 구간 설정이 되는것인데, s=1 이 되고 2 / 3 / 1 구간에 대한 경우의 수를 확인할수있게 되는 것으로 보이는데요 완성되었다는 표현이 어떤것을 의미하는것인가요?