묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/681ea9efbab148389692696bbe044d80문제 고민하다가 강사님께서 말씀하신 풀이대로 하던 중에 "모든 구역 다 탐방해도 되지만, 그냥 L인 부분만 골라서 그 좌표 넣어서 하는 건 안 될까?' 라는 생각이 들어서 갑자기 이 코드로 해봤는데요, bfs에서 반환되는 부분이랑 main에서 treasure.size 부분에서 오류가 있다는 건 아는데, 이렇게 해서 이 문제 해결에 대해서 강사님의 생각이 듣고 싶습니다!
-
미해결홍정모의 따라하며 배우는 C++
마지막 예제 질문
#include <iostream>using namespace std;int main() {cout << ((true && true) || false) << endl;cout << ((false && true) || true) << endl;cout << ((false && true) || false || true) << endl;cout << ((14 > 13 || 2 > 1) && (9 > 1)) << endl;cout << !(2314123 > 2 || 123123 > 2387) << endl;return 0;} 마지막 예제에서, 위와 같이 조건식을 통째로 괄호로 싸주거나, 끝에 endl없이 출력해야 빌드가 되네요.예를들어,cout<<(true&&true)||false<<endl;은 error C2563: mismatch in formal parameter list에러가 뜹니다.cout << ((true && true) || false) << endl;또는cout << (true && true) || false;로 코딩해야 빌드가 돼요.현상만 보고 추정하기로는 endl함수가 1개의 인자만 받아야해서 그런거 같은데 맞나요?? 에러 내용이 정확히 뭔지 설명 부탁드려요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-D 이왜틀 질문있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.vs코드에선 문제없이 결과값이 잘 출력되는데 백준에서 채점을 하면 틀렸다고 나옵니다. 계속 고민하다가 어떤 것이 문제인지 잘 모르겠어서 이렇게 질문 드립니다 ㅜㅜhttp://boj.kr/39e3a3ae1e12496c89bd1a369f199c12
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 질문있습니다.
저는 선생님과 달리 bfs로 로직을 짰습니다.이유는 완전이진 트리만을 생각했기 때문에가장 높은 레벨인 노드들만 카운트하면 된다 생각했었습니다.물론 틀린생각이었죠.어찌됐든 bfs로 로직을 짰고 자식노드가 발견되면 플래그를 변경하고 플레그에 따라 리프노드를 선별하는 방식입니다.또한 삭제노드와 동일한 노드는 큐에 추가하지 않고 패씽했습니다.무엇이 문제인지 모르겠습니다.http://boj.kr/9c43785254f842aa975a11e833102304
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[교안 질문]재귀를 이용한 순열
쌤. 위의 함수에서 r 파라미터를 사용하는 의미가 무엇인지 궁금합니다.아래와 같이 r을 생략하고 n으로 대체해도 같은 결과를 얻을 수 있어 보여서요. void makePermutation(int n, int depth){ if(n == depth){ printV(v); return; } for(int i = depth; i < n; i++){ swap(v[i], v[depth]); makePermutation(n,depth+1); swap(v[i], v[depth]); } return;}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3주차 개념강의 - 색종이 붙이기
쌤~3주차 강의 중에, 색종이 붙이기 부분에서, 전반적으로 이해가 잘 안됩니다..특히 함수들의 파라미터 중, int cnt가 하는 역할이 어떤 것인지 감이 안잡히네요 ㅠ Q1. 왜 cnt 라는 파라미터가 존재해야 하는지부터 이해가 어렵습니다.. 왜 존재하나요?Q2. 모든 발단이 문제 해석이 와닿지 않아서 그런것 같습니다. 색종이 붙이기 문제에 대한 분석을 좀 더 설명 부탁드려도 될까요? 늘 좋은 강의 감사드립니다~!
-
미해결홍정모의 따라하며 배우는 C++
증감연산자 위치에 따른 수행 순서 질문입니다.
int a = 1, b = 10;int z3, z4;z3 = (++a, a + b);cout << a << " " << b << " "<< z3 << endl;cout << endl; a = 1, b = 10;z4 = (a++, a + b);cout << a << " " << b << " " << z4 << endl;cout << endl; 증감연산자가 앞에 붙는 z3는 a증감을 먼저 수행하고, a+b 연산을 수행하고, 그 값을 z3에 대입하는 것이니 이해했는데요. 증감연산자가 뒤에 붙는 z4는 a는 그대로 있고, a+b를 수행하여 그 값을 z4에 대입하고, 그 뒤에 a증감 수행하는게 아닌가요?여전히 z4도 12가 나오네요. 증감연산자가 뒤에 붙는 경우 연산이 후순위로 되는데, 그 범위가 ;로 끝나는 라인까지라고 생각해서 지금까지 다 맞아왔는데 이 예문에서는 그게 아닌 것 같습니다. 증감 연산자 순서 범위가 정확히 어떻게 되나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2589번 보물섬 테스트케이스
안녕하세요 큰돌 선생님 수업 잘 듣고있습니다.다름이 아니라 강의를 듣기전 문제를 한번 풀어보았는데 궁금한 것이 생겨 질문 드리게 되었습니다.https://www.acmicpc.net/source/55784974육지인 지역 2곳을 뽑아서 bfs(최단거리)를 사용해 풀었는데요, 틀렸습니다. 시간복잡도의 문제도 있겠지만 그 전에 12%에서 반례 케이스가 존재하였습니다.5 5LLLLLLWWWLLWWWLLWWWLLLLLL이 테스트케이스의 답은 8인데 저는 14가 나왔습니다.궁금해서 visited배열을 출력하였더니, 이렇게 나왔습니다.정상적으로 bfs가 수행되지않았는데 이유가 무엇인지 알 수 있을까요?감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
문제풀이관련 질문
안녕하세요 큰돌님 문제풀이 관련 질문이 있어 이렇게 글을 남깁니다.유튜브에서 코딩테스트 딱 이정까지 고민하세요 영상을 보면 난이도에따라 골드5~3정도는 1시간골드2~플레 4시간 고민하라고 하셨는데, 말씀해주신 시간만큼 고민했지만 풀지 못한 문제 또는 틀린 문제는 어떤 방식으로 학습하고 복습하는게 좋나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
c++ 코드를 파이썬으로
안녕하세요.문득 든생각이 있습니다. c++도 공부는 하는데 시간이 좀 부족해서 수업을 들으면서 파이썬으로 최대한 매핑해서 코드를 짜보려고 합니다. 강사님 문제 풀이 로직(c++) 코드를 파이썬으로 옮기면 코딩테스트에서 시간 초과나 메모리 문제가 생길 수 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 선생님 교안 공부하다가 ..
안녕하세요. 알고리즘 공부를 위해 강의를 구매했고 C++ 알고리즘 교안을 통해 공부 중입니다.교안을 보다보면 제 머리가 조금 부족해서 내용 이해가 정확히 안가는 부분도 있고, 내용이 적지 않다 보니 1주일 공부하다보면 앞에 내용이 기억나지않아 뒷 부분에서 이게 무슨 소리인가라는 생각이 자주 듭니다. 이럴 때, 기억나지않아도 적당히 이해하면서 교안을 뒤로 넘기며 계속 공부를 이어나가야 할지 앞에 내용을 다시 공부하고 진행해야 할 지 모르겠습니다. 교안을 완벽하게 숙지(이해, 암기)하고 강의를 듣고 공부를 해 나가야할지, 아니면 모든 내용이 기억나지 않고 완벽하게 숙지되지 않더라도 앞으로 나아가야할지 어느 방법을 추천하시는지 조언해주시면 감사하겠습니다. 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
c++ 설치관련문의
교안에서 윈도로 설치할 경우 DevC++을 추천한다고 했습니다. 제가 유니티를 전에 사용하면서 비줄얼스튜디오2022가 이미 설치가 되어있습니다. 이경우에서도 DevC++를 설치하는 것이 나을지 아니면 이미 있는 비주얼스튜디오2022로 사용해도 되는지 각각의 장단점을 문의드립니다.
-
해결됨홍정모의 따라하며 배우는 C++
단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.
Cents operator-() const { return Cents(- cents_); }저 리턴부분에서 임시객체인 Cents를 빼도 정상적으로 -가 붙어서 출력이 나오는데요. 왜 굳이 임시 객체를 통해서 반환해 줘야 하나요? 인스턴스를 만들면 this가 자동으로 호출이 되니까 Cents를 빼고 return this->(-cents_); 또는 return -cents_; 를 해줘도 멤버변수를 그대로 리턴해줄 수 있지 않나요??
-
미해결홍정모의 따라하며 배우는 C++
friend함수 관련 질문이 있습니다.
class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } //생성자 int getcents() const { return m_cents; } friend Cents operator + (const Cents& c1, const Cents& c2) { return Cents(c1.m_cents + c2.m_cents);// 안으로 들어왔기 때문에 getcents()함수를 통해서 접근할 필요가 없음. } };이렇게 클래스 안에서 정의한것과 class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } //생성자 int getcents() const { return m_cents; } friend Cents operator + (const Cents& c1, const Cents& c2); }; Cents operator + (const Cents& c1, const Cents& c2) { //return Cents(c1.getcents() + c2.getcents()); return Cents(c1.m_cents + c2.m_cents); }이렇게 밖에서 정의하는것의 차이가 궁금합니다.강의 마지막 부분에 클래스 부득이하게 멤버변수라던지 등등이 선언이 안되서 컴파일 에러가 발생하기 때문에 아예 존재한다 정도만 알려주는 선에서 미리 선언만 클래스 내부에서 하고 정의는 아예 밖에서 해버리는 케이스를 예로 들면서 설명해주셨는데요 오직 이런 상황만이 저렇게 friend함수를 외부에서 정의하는 이유에 해당되는지 아니면 주된 목적이 따로 있는지 궁금합니다. 요약.1.friend함수를 클래스 내부or외부 에서 정의할때 기능적인 차이 혹은 이유가 존재하는지??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-H에서 질문
1-H에서 for (int i = 1; i <= n; i++) { cin >> temp; psum[i] = psum[i - 1] + temp; } 이 부분을 왜 해주는지 이해가 안가네요.. 문제 보면 첫번째 두번째 더하고 두번째 세번째 더하고...내림차순 한 다음 첫번째것만 빼오면 되는줄 알았는데 뭔가...답안 보면 복잡하네요..이해도 안가고..
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
클래스 타입의 포인터 질문합니다
class Knight(){public:void GetHp(){}}int main(){(1) Knight k1k1.GetHp()(2) Knght *k1k1->GetHp()함수를 호출할 때 멤버 함수 같은 경우 어떤 특정 객체의 주소를 넘겨주는 것까지 포함하고 있는 규약을 따르고 있고 마치 포인터와 유사하듯이 k1의 주소 즉 Knight의 스택 주소를 넘겨줘서 멤버 함수 내부에서 자기 자신의 정보를 수정할 수 있다고 알고 있습니다 .k1이 포인터 타입일 경우와 아닐 경우 둘 다 Knight의 주소를 담고 있지만 큰 차이점으로는 k1은 Knight의 스택 주소를 갖고 있고, 그 스택 영역이 끝나면 k1으로 더 이상 Knight의 접근할 수 없고*k1은 Knight의 힙 영역에 주소를 갖고 있는 것이 큰 차이점이라고 보면 될까요?int a=1 int *b=&a 그리고 포인터는 b의 변수에 a의 주소를 갖고 있고 그 주소를 타고 가면 int타입이 있을 것이라고 했는데 Knight *k1는 k1의 어떤 주소가 담겨 있는데 그 주소로 가면 Knight 타입이 있다는 의미인데 k1의 어떤 주소를 갖고 있는지 명시하지 않아도 Knight의 주소를 갖고 있을 것이라고 어떻게 아는 것일까요?
-
해결됨홍정모의 따라하며 배우는 C++
operator+ 정의부분에서 궁금한 것이 있습니다.
Cents operator+(const Cents& right_value) { return (this->cents_ + right_value.cents_);//추상적인 클래스는 return by reference가 불가능함! }에서 교수님께서는 return Cents(this->cents_ + right_value.cents_); 라고 입력하셨는데, getCents()의 오버로딩을 통한 함수 호출이 아니라서 사실상 return 뒤에 Cents를 안 붙여도 정상적으로 작동하던데 이게 맞나요?두번째로, 다른 분들의 질문 글을 참조하였는데, 클래스를 반환하는 것이 아닌 아래와 같이 void를 반환하고friend void operator+(const Cents & c1, const Cents & c2) { cout << c1.m_cents + c2.m_cents << endl; } int main() { Cents cents1(6); Cents cents2(8); cents1 + cents2; // 14 도 정상적으로 작동하는데 클래스를 반환하는 것과 void를 반환하는 것중 어느게 더 속도가 빠른가요??마지막으로, non-member function으로 오버로딩을 할 때 cents1과 cents2는 각각 다른 주소에 멤버변수가 저장되어 있어서 operator+가 private에 접근하려면 friend를 선언해야 한다는 제 이해가 맞을까요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
string에서 "="과 "==" 과정이 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님! 저는 기존에 다른 언어로 코딩테스트를 준비하다가 큰돌님 강의로 C++로 언어를 바꾸고 다시 공부를 하고 있습니다.자바에서는 String에 temp = s와 같이 작성하면 temp에 s의 주소값이 넘어가게 되고 temp를 어떻게 바꾸던 s도 함께 바뀌게 되어 어떤 로직이든 temp==s는 참이 되는데C++에서는 string 타입에서 =과 ==이 어떻게 동작하는지가 궁금합니다. 배열에서 배열이름을 주소값으로 사용하는 것처럼 string도 변수명이 첫요소의 주소값인가 생각했는데 코드가 동작하는걸 보면 아닌 것 같아서 어떻게 동작하는지 질문드리고싶습니다.좋은 강의와 자료를 제공해주셔서 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-k 문제의 숫자 범위 문의드립니다.
선생님 풀이 내용 중에 의문이 생겨 질문드립니다.for(int j = 5; j <= a; j *= 5){ ret5 += a / j;}여기서 a 가 최대 10억 정도가 되는데 최악의 경우 j에 50억이 들어가고 오버플로가 발생할수도 있지 않을까요?j의 타입을 long long 이 아닌 int 로 해도 안전한 이유가 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C++
3분 17초 질문
강의 3분 17초 기준10번줄에 나온 ptr1(res) 부분에 대하여 질문 있습니다.저렇게 되면 "ptr1이 res에 대한 소유권을 가진다"는 것은 알겠으나, ptr1이 outer block을 나가면서 res도 같이 지워진다는 것이 잘 이해가 안됩니다.10번 줄의 의미가 "res라는 포인터가 있고, 이 포인터를 ptr1이 가리키는 형태"가 아닌, move로 res가 ptr1으로 옮겨진 것인가요?왜 "ptr1이 사라짐 = res도 같이 사라짐"이게 되는 것인가요?