묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
배열 참조가 재귀함수보다 속도가 빠른 것이 아닌가요?
1번은 제가 혼자 구현한 코드, 2번은 강의를 참고해서 로직을 살짝 바꾼 코드입니다.http://boj.kr/93dd64e4fe984863b6e61f8a7916e40chttp://boj.kr/5a252acbbd6a450d92e338eeacc9a8ab 강의에서는 visited를 매번 초기화하여 사용하였는데, 제 1번 코드에서는 visited를 초기화하지 않고 dp처럼 방문 가능 노드 갯수 값을 저장한 뒤 해당 값이 있으면 재귀함수를 수행하지 않고 바로 값을 가져오도록 하였습니다. 이렇게 하면 2번보다 당연히 시간이 빠를 것이라 생각했는데 오히려 1번이 시간초과가 발생하고 2번이 정답 처리되었습니다. 2번 방식은 visited가 매번 초기화되기 때문에 같은 값을 여러 번 계산하게 되고 1번은 childCount하나당 단 한 번만 계산하는데 속도가 더 느린 이유가 무엇인가요? 지금까지는 별 질문 없이 잘 풀다가 원래도 어려워했던 그래프에 도착하니 막히는 부분이 많아져서 질문을 부득이하게 여러 개 올리게 되었네요...도움 부탁드립니다!
-
미해결홍정모의 따라하며 배우는 C++
ofs.write((char*)&num_data, sizeof(num_data)); 질문
const unsigned num_data = 10; ofs.write((char*)&num_data, sizeof(num_data)); for (int i = 0; i < num_data; ++i) ofs.write((char*)&i, sizeof(i)); 여기서 같은 write함수인데,,, 위에꺼는 그냥 파일공간만 확보하는 건가요? 아래꺼는 실제로 쓰는거구요?이 부분이 너무 이해가 안되네요... ofs.write((char*)&num_data, sizeof(num_data));<- 이라인이 하는 역할을 잘 모르겠네요...같은 맥락에서 ifs.read((char*)&num_data, sizeof(num_data)); <- 이 라인의 역할과 처음 num_data를 0으로 초기화 시켜서 이 변수가 디버그를 돌려보니 10으로 바뀌더라고요.. 어떻게 해서 그렇게 되는건지.. ifs.read((char*)&num, sizeof(num));<- 이줄은 그럼 그 다음 주소로부터 4바이트씩 읽어오는 것인지.. 아니면 메모리에 이만한 공간을 할당하는 과정인지 궁금하네요..
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
해당 문제에서 트리가 무조건 한개만 존재한다는 보장이 있나요?
강의에서 설명하신 코드대로라면 트리가(루트노드가) 단 하나만 존재해야 하는데 문제에서는 트리가 반드시 하나만 존재한다는 설명이 안보여서요3-1 -1 -11답 : 2이런 입력이 들어오면 강의에서 주어진 코드로는 25~27줄로 인해 0이 출력될 것 같습니다.
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
뒤집은 소수문제
제가 혼자 숫자 뒤집는 코드를 짜봤는데 혹시 여기서 무엇이 잘못되었는지 알려주실 수 있나요...? 콘솔창엔 아무것도 뜨지않았습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
치즈 녹이는 로직을 벡터 없이 구현했는데 시간 초과가 발생합니다
평소에 문제 번호만 읽은 뒤 혼자 풀어보고 안풀리면 강의를 참고하면서 공부 중인데요,http://boj.kr/643383b66dea47fdac83a802a5ed1c3f해당 코드에서 치즈 녹이는 로직을0인 칸을 dfs로 돌면서 상하좌우에 1인 칸이 있으면 해당 칸을 2로 변경(0으로 바로 변경하면 다른 칸에서 마주칠때 문제가 생길 수 있으므로)dfs를 마친 뒤 recover함수에서 arr을 돌면서 2인 부분을 0으로 변경이런 방식으로 구현을 했는데 아무리 코드를 최적화 해봐도 계속 시간초과가 발생했습니다. 도저히 안돼서 큰돌님 강의를 보고 벡터에 좌표를 저장해 해결한 코드가 아래 링크입니다.http://boj.kr/f4f738238bdb453bbf9a967627ddb912강의를 참고해 문제를 해결하긴 했는데, 왜 첫 번째 방법이 더 느린지, 혹시 첫 번째 방법으로도 시간초과에 걸리지 않게 짤 수가 있을지 궁금해서 질문합니다!
-
미해결홍정모의 따라하며 배우는 C++
왜 안될까요 컴파일러 문제일까요?
헤더만 사용하면 항상 에러가 나는데 왜인지 잘 모르겠습니다.directory 구조는8-8_haeder - main.cpp - calc.cpp - Calc.h하지만 빌드하면 아래와 같은 에러가 뜹니다Starting build... /usr/bin/clang++ -std=c++17 -fcolor-diagnostics -fansi-escape-codes -g /Users/user/Documents/cpp/8-8_header/main.cpp -o /Users/user/Documents/cpp/8-8_header/main Undefined symbols for architecture arm64: "Calc::add(int)", referenced from: _main in main-0ed3f2.o "Calc::mul(int)", referenced from: _main in main-0ed3f2.o "Calc::sub(int)", referenced from: _main in main-0ed3f2.o "Calc::print()", referenced from: _main in main-0ed3f2.o "Calc::Calc(int)", referenced from: _main in main-0ed3f2.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Build finished with error(s).Mac m1인데 컴파일러 문제일까요?아래는 코드입니다.//calc.cpp #include "Calc.h" using namespace std; Calc::Calc(int init_value) : m_value(init_value) {} Calc& Calc::add(int value) { m_value += value; return *this; } Calc& Calc::mul(int value) { m_value *= value; return *this; } Calc& Calc::sub(int value) { m_value -= value; return *this; } void Calc::print() { cout << m_value << endl; } //Calc.h #pragma once #include <iostream> class Calc { private: int m_value; public: Calc(int init_value); Calc& add(int value); Calc& mul(int value); Calc& sub(int value); void print(); }; //main.cpp #include <iostream> #include "Calc.h" using namespace std; int main() { Calc cal(10); cal.add(10).sub(1).mul(2).print(); }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
BFS 당근마킷 엔지니어 승원이 코드 질문있습니다
안녕하십니까 큰돌님강의 보기 전에 제가 먼저 코드 작성했었는데 디버깅으로 결과도 확인했을 때 잘 나오고 강사님 코드랑 유사한데 맞을까요 ??http://boj.kr/bb58425d5106413eae8e4b959504dbb6근데 백준 아무 문제에 제출했을 때 결과가 틀렸습니다 가 아닌 컴파일 에러 라고 뜨는데 로직이 잘못된 걸까요 ??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p.78 질문입니다.
자 그렇다면 first는 내림차순, second는 오름차순 정렬하고 싶다면 어떻게 해야할까요?바로 커스텀 비교함수 cmp를 만들어 매개변수로 넣으면 됩니다. (보통 cmp라는 함수명을 많이 씁니다.)pair의 first를 내림차순 하고 싶으면sort(v.begin(),v.end(),greater<pair<int,int>>());이렇게 해도 되지 않을까여?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-Z 질문입니다.
안녕하세요 큰돌님,for(int j = x1 + 1; j <= x2; j++){ cout << "j:" << j << " x2:" << x2 <<'\n'; _x[j]++; } 해당 코드에서 범위가 j <= x2 마지막 꼭지점이 포함되는 이유를 모르겠습니다. 아래 조건을 준수하려면 마지막 꼭지점은 제외해야 할 것 같은 생각이 들어서요. 단, 수평선 H는 다각형의 어떤 수평선분과도 겹처 놓여서는 안 되고, 유사하게 수직선 V는 다각형의 어떤 수직선분과도 겹쳐 놓여서는 안 된다.감사합니다! - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p.75 sort() 에 관한 질문입니다.
first는 정렬하고 싶은 배열의 첫번째 이터레이터, last는 정렬하고 싶은 배열의 마지막 이터레이터를 넣으면 됩니다. 또한 [first,last) 라는 범위를 갖습니다. 즉, first는 포함하고 last는 포함하지 않는다는 의미입니다. 그렇기 때문에 예를 들어 크기가 5인 a라는 배열 전체를 sort한다고 하면 sort(a[0],a[0] + 5)라고 해야 합니다. 즉, last에 배열의 마지막요소가 아닌 그 “다음”의 위치를 넣어주어야 합니다.굵게 표시친 부분에서 sort(a,a+5)가 아닐까요??
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
템플릿 적용
안녕하세요, 유익한 강의 감사합니다.질문에 필요한 내용으로 특정 영역을 발췌해서 올립니다.이번 질문은 템플릿의 사용이 어디까지 이어지는지입니다.Q1. @QQQQQQ 주석이하의 내용의 경우연산자 함수 스택 프레임에서 Iterator객체를 생성하였습니다. 이 때 T는 어떻게 결정이 되는건가요? 한 번 T가 결정되면 해당 클래스 설계도를 사용하는 메모리들은 T를 따로 정의하지 않아도 그대로 계승되는건가요?template<typename T> class Iterator { public: Iterator& operator++() { _ptr++; return *this; } Iterator operator++(int) { // @QQQQQQQQ Iterator temp = *this; _ptr++; return temp; } public: T* _ptr; }; Q2. 강의 정말 열심히 공부하고 있고 얼마 안있으면 완강을 하게될 것 같습니다. 저는 백엔드 개발자를 지망하고 있고 그전에 프로그래밍 기초체력을 탄탄히 쌓기 위해 본 과정을 공부하게 되었습니다. 이후 루키스님의 자료구조/알고리즘까지 공부하고 코테는 c++로 준비할 생각인데요. 본 강의를 한 번 더 복습하는게 나을까요? 아니면 자료구조강의로 바로 넘아가도 괜찮을까요? 개인적으로 전체 내용에 대해서 80~85% 정도이해한 것 같습니다.
-
해결됨CUDA 프로그래밍 (2) - C/C++/GPU 병렬 컴퓨팅 - 벡터 vector 더하기
global 변수가 cuda memory에서 사용되는 이유
- 출장이 잦아서, 답변에 시간이 좀 걸릴 수도 있습니다. 양해 바랍니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 선생님! 궁금한 게 있어서요. device memory와 host memory는 구분되어 있잖아요?? 그래서 각각 사용되는 데이터는 각각의 메모리에서 사용하는 것으로 알고 있었어요. 그런데 vecSize 나 saxpy_a는 global로 선언 되어 있는데, 이 변수들은 device메모리에서 어떻게 사용하는 거죠?? global 변수의 위치는 host memory에 위치 하지 않나요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[ 6 - J ] 질문입니다
안녕하세요 선생님, 답지에서 이해가지 않는 부분이 있어 질문을 드립니다.https://www.acmicpc.net/source/share/c2fb354cd24049edb34fbd09a91a38d3check 함수 및 마지막에 직접 태우는 부분에서temp = 0으로 초기화해야 올바른 답이 나온다고 생각했는데 temp = m으로 초기화 해야 하는 이유를 확실히 모르겠습니다. 예제 2를 예시로 들어봤을 때 (학생 수 : 7, 놀이기구 수 : 2, 각각 운행시간 : 3 2)temp = 0으로 초기화하고 시작하면 6분이 되었을 때 놀이기구 1은 2명, 놀이기구 2는 3명을 막 완료한 상태이므로 남은 아이들은 2명, 2명을 각각 놀이기구 1, 2에 태워 운행이 끝날 때 까지 기다리면 + 3분으로 9분이 올바른 종료 시간 같은데 아닌 이유가 무엇인가요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션5 인벤토리 강좌에서 Weapon 구현부 작성 질문
Weapon::Weapon() : Item(IT_Weapon){ switch (_rarity) { case IR_Normal: _damage = 1 + rand() % 5; break; case IR_Rare: _damage = 10 + rand() % 5; break; case IR_Unique: _damage = 50 + rand() % 5; break; }} 이 부분에서 맨 위, Item(IT_Weapon) 가 어떻게 나온건지 궁금합니다. : 뒷 부분은 초기화하는 것을 간략하게 나타낸 것이 아닌가요? 그렇다면 Item = IT_Weapon; 이라는 코드 대신에 사용했다는 말인데, Item 자체는 class 명인데 코드가 말이 안되는 것 같습니다..
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
객체 생성
문득 임시 객체를 연습하다가 궁금한 점이 있어 질문드립니다. Q. 객체 생성을 위해서는 반드시 어떤 방법으로든 생성자가 호출되어야하나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
split함수 작성시 질문
input.erase(0, pos+delimeter.length()); 대신input.erase(0, pos+delimeter.size()); 로 써도 무방한가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
맵과 방향벡터 퀴즈 질문있습니다
안녕하십니까 큰돌님Q. 3 * 3 맵을 입력받아야 함. 이 맵은 1과 0으로 이루어져있고 {0, 0}은 무조건 1임을 보장한다. {0, 0}부터 4방향을 기준으로 한칸씩 탐색해나가며 방문한 정점은 다시 방문하지 않으며 방문하는 좌표를 출력하는 코드. 0은 갈 수 없는 지역. 1은 갈 수 있는 지역을 구현하시오.1. 문제의 뜻이 {0, 0}을 기준으로 4방향으로 탐색하는데 다 0이면 그 다음 칸인 {0, 1}로 이동하는데 0이니까 그 다음 칸인 {0, 2}를 기준으로 4방향을 탐색하는데 밑에 1이 있으니까 {1, 2}를 기준으로 또 4방향으로 탐색하고~, 이렇게 하라는 뜻이 아닌 거죠 ??저는0 : 01 : 00 : 21 : 22 : 22 : 1이렇게 출력되게 해야하는 줄 알았는데 위 문제의 답 코드를 실행시키면0 : 01 : 0이렇게 나와서 제가 이해력이 안 좋아서 질문드립니다 ㅎ dfs까지 추가로 강의를 들었는데 위 퀴즈의 go 함수 로직이 사실 dfs 로직인 건가요 ??종화는 방구쟁이야! 문제의 dfs 로직과 위 퀴즈의 go 함수 로직과 거의 유사해보여서요 ) 트리 순회의 조건문 visited[here] == 0 안의 로직에서 중위 순회에서만 else-if 문을 사용하는데 http://boj.kr/9ed45ee550c0492081f5cbd187a7c71d 이런식으로 전위, 후위에서도 자식 노드가 한 개 아니면 두 개 둘 중에 하나니까 두 번 if문 볼 필요없게 else-if문 사용해도 되는거죠 ??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
인접리스트 기반 탐색 코드 질문있습니다
안녕하십니까 큰돌님인접행렬 때의 코드와 인접리스트 코드까지만 공부하고 퀴즈를 풀기 전에 작성했던 코드인데 깔끔하지는 않은데 1 2 3 4 출력은 잘 돼서 틀린 로직은 아닌 건가요 ?? http://boj.kr/72b4a1f671414e30a599594cfaf2bb84
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
출력 관련해서 질문드려요~
#include <bits/stdc++.h> using namespace std; int n, m, y, x, toX, toY, nx, ny; int arr[104][104]; int visited[104][104]; queue<pair<int,int>> q; int dx[4] = {0,1,0,-1}; int dy[4] = {-1,0,1,0}; int main() { cin.tie(NULL); cout.tie(NULL); cin >> n >> m; cin >> x >> y; cin >> toX >> toY; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> arr[i][j]; } } visited[x][y] = 1; q.push({x, y}); while (q.size()) { tie(x, y) = q.front(); cout << x << y << "\n"; q.pop(); for (int i = 0; i < 4; i++) { nx = x + dx[i]; ny = y + dy[i]; if (nx < 0 || ny < 0 || nx >= n || ny >= m) continue; if (arr[nx][ny] == 1 && !visited[nx][ny]) { visited[nx][ny] = visited[x][y] +1; q.push({nx,ny}); } } } printf("%d\n", visited[toX][toY]); cout << visited[toX,toY]; return 0; }안녕하세요 printf로 출력을 했을때는 9가 잘 뜨는데 왜 cout을 하면 주소값(0x415fc0)이 뜨는지 이유를 알 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
공부방법에 대해 질문이 있습니다
알고리즘공부를 어느정도는 예전에 해본 수강생입니다다만 c++에대한 기본지식이 선생님이 올려주신 교안을 살펴보니 모자른점이 있어 교안을 보면서 공부를 해보고있습니다.딱 백준기준으로 골드초입정도인 dfs/bfs같은 문제까진 계속 풀어오긴했는데 비트마스킹이나 정규식 문자열파싱등 제게 모자르던 기초부분이있다는걸 교안을통해 배우게되어 좋습니다선생님강의의 1주차부터 본격적인 알고리즘 강의내용이 들어가는듯 한데 교안을 전부다 끝내고 수업을 듣는게 맞을까요? 아니면 같이병행하는게맞을까요?