안녕하십니까 큰돌님 강의 보기 전에 코드 작성했는데 저는 지울 노드가 주워졌을 때 진짜 없애는 코드를 작성했었는데 틀렸더라구요. 어디가 틀렸을까요 ?? http://boj.kr/7a0241561d4f4fcc9c6a10d8f190da42 +커뮤니티에서 반례를 찾았습니다 2 1 -1 1 답 : 0 / 제 코드 : 1 추가로 궁금한게 저 반례의 경우 그림이 어떻게 되는 건지 모르겠습니다 + 그리고 다른 질문 중에서 ""트리가(루트노드가) 단 하나만 존재해야 하는데 문제에서는 트리가 반드시 하나만 존재한다는 설명이 안보인다 3 -1 -1 -1 1 답 : 2"" 라는 질문이 있는데 만약에 저렇게 주어졌을 때 저는 답이 3이라고 생각하는데 2인 건가요 ?? 저 상황에서의 그림 또한 궁금합니다
안녕하세요 선생님 좋은강의 감사합니다. 강의를 보고 코드를 작성하던중에 질문이 생겼습니다. 강의속 코드에서 turn = 1로 초기화 하고 b 에다가 turn을 더하는 방식으로 코드를 작성하셨는데 turn = 0 으로 초기화 하고, 이에 맞게 코드를 재작성하니 원하는 답이 나오지 않아서 질문 드립니다. 우선 테스트케이트 17, 5 를 입력했을때 4가 아니라 6이 나와서 애초에 틀렸기 때문에 코드를 백준에 제출하지 않았습니다. 따라서 링크가 아닌 질문에 제가 작성한 코드를 첨부하겠습니다. #include <bits/stdc++.h> using namespace std; int N, K, visited[2][500005]; bool flag; int bfs(int N, int K) { int turn = 1; queue<int> q; q.push(N); visited[0][N] = 1; while (q.size()) { K += turn; if (K >= 500001) return -1; if (visited[turn % 2][K]) { flag = 1; return turn; } int qsize = q.size(); for (int i = 0; i < qsize; i++) { int here = q.front(); q.pop(); if (here == K) { flag = 1; return turn; } for (int there : {here + 1, here - 1, here * 2}) { if (there < 0 || there >= 500001) continue; if (visited[turn % 2][there]) continue; visited[turn % 2][there] = visited[(turn + 1) % 2][here] + 1; q.push(there); } } turn++; } return -1; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> K; int res = bfs(N, K); if (flag) cout << res << '\n'; else cout << - 1 << '\n'; return 0; }
http://boj.kr/b99b5a5fdbd244e797ca23eca42b1662 *설명은 주석해놓았습니다. 강의를 듣기 전에 먼저 짜본 코드인데 모든 입력 값에 대해서 is not acceptable만 출력되는 오류가 발생하는 코드입니다. 큰돌님 코드랑 비교했을 때 전체적인 로직은 다를 바가 없다고 보이는데, 어디가 잘못된건지 짚어주시면 감사하겠습니다.ㅠ
성역에서 시간을 보내다보니 2주째 손을 놓아버렸네요 다시빡공갑니다 좌표탐색할때 좌표평면이 저희가 평소알던게아니라 y가 뒤집어져있어서 헷갈리는데 const int dy[] = {-1,0,-,0}; const int dx[] = {0,1,0,-1}; 가 아니라 const int dy[] = {1,0,-1,0}; const int dx[] = {0,1,0,-1}; 으로해도 답은 맞게나오던데 상관없나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 2979번 문제 정답 교안으로 공유해주신 코드의, 맨 아래 for문에서 for(int j = 1; j < 100; j++) 코드 부분이 잘 이해가 가지 않습니다! 시간이 1 ~ 100 사이 값이 들어온다고 하는데 위의 반복문에서는 1 ~ 99번째 까지만 순회하며 주차요금을 정산하지 않나요? 부등호가 <= 가 아니라 < 기호가 들어가는지 이유가 궁금합니다ㅠ
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
수업 너무 잘 듣고 있습니다. 3가지 질문을 하고 싶습니다. 다형성 수업을 듣기 전, 자바를 통해서만 객체 지향 공부를 했었기 때문에 상속 클래스가 부모 클래스의 함수를 재정의 하면 다형성으로 인해 자식 클래스의 멤버 함수가 실행 되는줄 알고 있었으나, c++ 에서는 다형성을 위해 virtual 함수로 만들어줘야 한다는 것을 알게 되었습니다. Q1. 다형성을 위해 기본 클래스를 상속받은 자식 클래스들이 각자 마다 다른 함수를 실행하길 원할때마다 virtual 키워드를 기본 클래스에서 모든 멤버 함수마다 달아주는 것이 일반적인가요? 클래스 설계하실때 상속받을 클래스가 있어서 기본 클래스에 거의 모든 함수가 virtual을 달고 있는 것인지 궁금합니다. Q2. 상속성에서 생성자 / 소멸자 실행 순서를 말씀해주셨는데, 부모 클래스 생성자() -> 자식 클래스 생성자() -> 자식 클래스 소멸자() -> 부모 클래스 소멸자() 생성자의 호출 순서는 어떤 순서인지 궁금합니다. 자식 클래스 생성자가 호출 되기전 , 선처리로 컴파일러가 부모 클래스 생성자를 먼저 호출한다. (자식 클래스 생성자가 나중에 호출된다.) 호출 순서 또한 부모 -> 자식 자식 클래스 생성자가 내부에서 부모 클래스 생성자를 먼저 호출한다. (자식 클래스가 생성자가 먼저 호출된다,) 호출 순서는 반대 자식 -> 부모 Q3. 접근 지정자 private : 을 통한 멤버 함수들은 상속을 못 받는 것이 맞는 것으로 보이는데 다형성을 위해 재정의 할 함수들은 기본 클래스에서 모두 public : 선언을 해줘야 하는 것이 맞습니까? virtual 키워드가 달리는 함수들의 접근 지정자가 public : 이어야 하는것인지 궁금합니다.
http://boj.kr/24491eb2d8374e2992ee95757882a6ce 안녕하세요 큰돌쌤 2_J문제에서 왜 맞왜틀인지 잘 모르겠어서 질문드립니다. 저는 다음과 같이 코드를 짰습니다. h번 만큼 문자열 s를 입력받고 go함수 호출 go 함수에서 문자열 s의 요소가 'c'일때 s의 다음 요소도 'c'가 아니면 전 요소+1을 대입 ( s[i+1]=s[i]+1 ) 요소가 'c'보다 크다면 (99보다 크다면) 누적합 psum 을 +1하고 ret에 대입 요소가 'c'도 아니고 'c'보다 크지 않다면 ret에 -1대입 문자열 ret을 string 배열에 담아 출력
실은 제가 파이썬으로 구현을 해보려고 해서 질문을 남겨요. vector<int> v[10001]; v[b].push_back(a); 이게 2D array라고 생각하면 될까요.. 문제의 자료를 담으려면 수도 코드로 [b : [a1, a2, a3], b2 : [a1, a2, a3]] 이렇게 들어가는게 맞을텐데 , 그럼 위에서 vector<int> v[10001]; 으로 선언한 부분이 각 b (신뢰받는 컴퓨터) 에 대해서 여러 a 들(신뢰하는 컴퓨터)를 담는 위 수도 코드를 구현할 수 있는 자료구조형인걸까요? 교안을 찾아봐도 모두 vector<int> v; 로만 선언되어서 1-d array로만 나오는 것 같어서 위 구조 v[10001] 를2-d array로 봐도 되는지 궁금합니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요 루키스님 강의를 듣다가 이해가 잘 되지 않는 부분이 있어서 질문드립니다!! 병합 정렬의 MergeResult() 에서 아래 코드가 잘 이해가 안되는데요..! 왜 v[left] = temp[i] 가 아니라 v[left + i] = temp[i] 인건가요..?? // temp 에 넣어준 걸 원본에 덮어쓰기 for (int i=0; i<temp.size(); i++) v[left + i] = temp[i];
안녕하세요 루키스님! 이제 막 c++를 끝내고 directx11 강의를 듣고 있는 중인데요. 기본프레임워크 강의를 듣는 중 루키스강사님께서 중간에 이전 강의때 배웠던 것들이죠? 라는 식으로 강의를 진행하는 부분 들이 꽤 있어서 여쭤봐요 ㅠㅠ 그냥 이해할 필요 없이 따라서 치면 되는 코드들인지, 알고 있다는 가정 하에 넘어가는 것인지, 아니면 제가 따로 구글링 학습 해야 하는 것인지, 햇갈려 질문 올립니다!!