묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
while(scanf("%d", &n) != EOF)를 써야하는건 오바 아닐까요
입력이 끝나는 조건을 제대로 알려줘야 하지 않나요 이런건 너무 불친절한 문제인거 같아요 앞으로는 이런 입력일때 while(scanf("%d", &n) != EOF)를 쓰면 되려나요
-
해결됨홍정모의 따라하며 배우는 C++
3.6 논리연산자 9분30초
안녕하세요?9분 30초 부근에서 선생님께서 5가 불리언타입으로 트루(1)이므로 !x는 펄스(0)가 된다그리고 y가 불리언으로 강제 형변하게 되면 트루.여기서 헷갈리는 게 y는 왜 강제적으로 불리언으로 형변하게 되는 건가요?ㅠ!x는 펄스이자 0이기에 0 == 7 이렇게 비교하면 되는 줄 알았는데 선생님께서는 y도 불리언으로 바꿔서 False == True 이렇게 비교하게 된다고 하셔서요... 그리고 추가적으로 !x는 불리언 타입으로 바뀌던데 글머 ! 연산자는 인티저나 다른 타입을 불리언으로 한 번에 바꿔주는 기능을 갖고 있는 건가요?
-
미해결홍정모의 따라하며 배우는 C++
3.5강 9분 59초 쯤 d1과 d2의 값
안녕하세요?d1의 값은 100 - 99.99이고d2의 값은 10 - 9.99로 적으셨는데왜 둘 다 0.001인가요?ㅠㅠ전 계산하면 0.01 나오는데 선생님께서는 0.001로 진행하셔서요...ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
psum[0] 값이 0인이유
안녕하세요 선생님 수업 잘 듣고 있습니다! 혹시 뇌를 잃어버린 승철이 문제에서 psum[0]값을 정의하지 않았음에도 0인 이유는 무엇인가요? 예전에는 값을 정의하지 않으면 랜덤한 값이 나온다고 어디서 들었던것 같은데 print를 해봐도 0이나와서 신기해서 여쭤봅니다. 강의 잘 듣고 있습니다 감사합니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
캐스팅4총사 강의 질문입니다
뒤에 부분을 다 안보고 질문드렸더니 조금 애매해졌네요.상식적인 캐스팅이 아니라애초에 부모가 어떤 자식의 타입이었는지 확실할때쓰는 것이라고 하는게 맞겠네요.강의에서 나오는 것처럼요Player* p = new Knight();Knight* k1 = static_cast<Knight*>(p);말이 안되는건 아니니까 그때 쓴다 이런 뜻이었네요.역시 한국말은 끝까지 들어봐야 되는거 같네요.. ㅎㅎ답변은 안해주셔도 되겠습니다. 감사합니다.=================================일단 주말에 질문을 드려서 죄송합니다.답변은 월요일에 해주시면 될 것 같습니다!3분 13초부터 나오는 상속 관계끼리의 타입변환에대해서 주석으로 이야기 해주시는 부분인데요Player*->Knight* (다운캐스팅) 이게상식적인 캐스팅이라고 하셨는데 아무리 들어도 뭔가 잘못된게 아닌가싶어서요. 반대로 이야기 하신것 아닌가요?..자식은 부모를 포함하고 있으니까 애초에 부모로도캐스팅 될 수 있는데 부모가 자식으로 캐스팅 되는 것은 타입변환 강의에서도 위험하다고 하셨던것 같은데혹시 player가 자식인가 싶어서 뒤에 내용도 봤는데 Knight가 자식이더군요. 제가 짐작하건데 반대로 이야기 하신게 아닌가 싶은데맞나요??업캐스팅이 상식적인것이고 다운캐스팅은 위험한것 아닌가요?그래서 위험하니까 다운캐스팅 시에는 명시적으로 했던 것이구요.인터넷에서 찾아봐도 다운캐스팅은 업캐스팅에 비해 안전하지 않다고 하는데 다운캐스팅이 상식적인 캐스팅이라는게 이해가 안되어서 질문드려 봅니다.같은 질문이 있나 찾아봐도 없어 이렇게 질문글 남깁니다.
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
[8] 프렌드: friend Time operator*의 인라인함수로서의 return 원리
[8]챕터의 '프렌드'강의에서 마지막에Time operator+(Time&);을 새롭게 만들어주고friend Time operator*(int n, Time& t) { return t * n; }으로 새롭게 고쳐주었는데 이때 return t * n이 어떻게, 어떤 식으로 작동할 수 있는 것인지 궁금합니다. Time& 자체에는 hours와 mins라는 두 개의 변수가 있을 텐데 두 변수에 모두 n을 곱한 값을 return해서 Time operator*(int)에 넘겨주는 것인지, 어떤 형태로 넘겨주는 것인지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-A
http://boj.kr/13f68e0e5c5840e9ba82ddfc8aa54993위 코드에서 주석을 제외하면 모든 입력에서 출력이 0이 나오는데 왜 그런지 잘 모르겠습니다.큰돌님 코드를 보면서 수정해서 거의 비슷한데 큰돌님 코드에서는 visited배열을 0으로 명시해줄 필요가 없었는데 왜 위 코드에서는 visited배열을 0으로 명시해줘야지 출력이 제대로 나오는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-A번
안녕하세요 큰돌님 . 2-A번 문제 2178번 미로 탐색 문제를 푸실때 배열 두개다를 max_n = 104개로 잡고 하는데 왜 104 인거죠? 특별한 이유가 있나요?그리고 N은 2 이상인데 104보다 클수도 있는데 왜 104로 특정했는지 궁금합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘교안 p113 2차원배열수정하기 질문
안녕하세요 사소할 수 있지만 궁금해서 질문올립니다!p113 코드 전문->>제가 먼저 113페이지 교안 코드 읽고 내용 이해한 다음에 교안 안보고 코드 타이핑해서 컴파일돌렸을때 위 사진의 코드처럼 6~13번째 줄 벡터 이름을 v, v2, v3로 작성했고, 잘 돌아갔습니다.그런데 교안과 동일하게 작성했는지 다시 봤더니 교안은 6~13번째 줄이 아래 코드처럼 셋다 v로 들어가있더라구요?void go(vector<vector<int>> &v){v[0][0] = 100; }void go2(vector<vector<int>> &v){v[0][0] = 100; }void go3(vector<int> v[10]){v[0][0] = 100; }그래서 오타인가 싶어서 제가 처음 작성했던것과 결과가 같은지 교안의 코드도 돌려봤는데 결과도 똑같이 나왔습니다..이거 왜그런건가요?? 오타가 아닌건가요?go(v); go2(v2); go3(v3); -> 저는 이 부분 때문에 인자와 매개변수를 일치시키기 위해 함수선언 부분에도 v, v2, v3로 작성했던거였는데, 일치시키지 않고 다 v로 넣어도 결과가 같은 이유를 모르겠습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
split함수 질문 있습니다!
http://boj.kr/1209b05bb2834533b556253dab193f9d교안에 있는 스플릿함수에서 string::npos의 기능은 무엇이고 언제 !=string::npos가 실행되는지 궁금합니다.pos선언시 pos의 값은 숫자에 불과할텐데 int가 아닌 long long을 사용하신 이유가 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘교안 p101 Point구조체 정의하기 코드해석 불가ㅠㅠ
이 코드 아예 해석이 안됩니다.......(참고로 언어는 C 하나 배워봤고 그 다음으로 지금 C++ 처음 공부해보는데 그래서 이해 못하는부분이 있는건지..조차 모르겠네요ㅠ)일단 4번째줄 Point 구조체 안에 int형 멤버변수 y,x까지는 알겠는데그 다음줄 Point(int y, int ) : y(y), x(x){} 부터 끝까지 아예 뭔소린지 모르겠습니다.이전 질문들 검색해보니 연산자 오버라이딩이라고 설명해주신 글이 있던데, 읽고 나서 '아 저 코드가 새롭게 연산자를 오버라이딩하는 코드구나'라는건 인지했는데 여전히 코드는 어떻게 해석하는지 모르겠어요.일단 Point는 우리가 방금 정의한 사용자 정의 자료형인데, 자료형 다음에 변수명이 와야 정상인거같은데 5,6번째줄 Point다음에 괄호가 바로 나오는것도 형식이 이해가 안가고,제가 지금까지 교안으로만 학습한 바로는, 범위기반for루프에서 : 기호를 사용한 형식이 있었던 것 말고는 : 를 본적이 없어서 Point(int y, int ) : y(y), x(x){} 여기 들어가는 : 기호가 무슨뜻인지 모르겠고, y(y), x(x)의 괄호도, 끝의 {}도 뭔지 모르겠어요.bool은 참거짓 판별 타입인데 저기서 왜 bool이 쓰였는지, operator는 뭔지, &는 주소를 나타낼때 쓰는거밖에 모르는데 const Point & a의 &는 내가 아는 의미가 맞는지, 맞다면 a는 정체가 변수인지 뭔지, a.x도 역시 a가 뭔지 모르니까 해석이 안되네요ㅠㅠ죄송합니다 너무 총체적난국이죠..?ㅠㅠ지금 여기서부터 p109까지 코드가 겹치는부분이 많아서 거의 이해가 힘든 상황이라 일단 p110으로 넘어가서 공부하고 있겠습니다...
-
미해결홍정모의 따라하며 배우는 C++
cin.ignore에 입력값의 차이가 궁금합니다, cin.clear 후 ignore 또 해주는이유도 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.int getInt(){cout << "Enter an integer number : ";int x;cin >> x;cin.ignore(32767,'\n');return x;} 위의 코드속 ignore에서 입력값(32767,'\n')을 안넣어줘도 버퍼는 지워지는걸로 알고있는데, 안넣어준뒤 cin에서 123공백123 을 넣어주면 다시 뒷부분 cin에 버퍼에 저장된 값이 들어갑니다. 왜 ignore에 입력값을 넣어주어야 하는건가요?? 또한 강의속에서 int 값에 너무 큰수가 들어갔을 떄를 대비하여 cin.clear로 버퍼를 비워준다하였는데 이미비워졌는데도 그뒤에 또 ignore을 사용하는 이유는 무엇인가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안 103페이지 map 사용시 주의점
103p 앞부분 설명에서,'다만 앞의 코드는 문제에서 해당 키값에 0이 아닌 값이 들어갈 때 활용이 가능합니다. 만약 문제에서 키에 0이 들어가는 경우 앞의 코드는 활용이 불가능합니다.예를 들어 문제에서 {0, : 주홍철}, {1, 역사} 이렇게 담는다면 불가능하고, {1 : 주홍철} , {2, 역사} 이렇게 담는다면 해당 로직에 사용가능합니다.'부분이 잘 이해가 가지 않습니다..왜 {0, : 주홍철}, {1, 역사} 이렇게는 불가능한 것이고 {1 : 주홍철} , {2, 역사} 이렇게면 가능한 것인가요? 102p 코드 예시는 map<int, int>인데 103p 설명 예시는 map<int,string>인 경우에서 다시 설명해주신 것 같은데 잘 이해가 가지 않습니다 ..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
Mac C++ 프로그램 설치
큰돌님 안녕하세요, 이번에 처음으로 코딩 공부를 시작했습니다. 본격적인 강의 시작에 앞서 Mac에서 C++ 프로그램 설치 중 제가 제대로 한 것인지 확인할 수 없어 질문 남깁니다.Ternimal에 Brew 및 GCC설치 완료교안에 나온대로 cd /usr/local/includemkdir bitscd bitsvi stdc++.h 구동하면 Insert가 아닌 "stdc++.h" [New]가 나옵니다. 그 후 지시대로 링크에서 코드 복사 후 붙여넣기하고 :wq입략하면 창이 그대로 있습니다.제가 C++ 프로그램을 제대로 설치한 것일까요? 아니라면 어디서부터 다시 설치해야할까요? 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-0 long long, int
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/4cc380b86f234f8ebe20dedceedfdc4f안녕하세요 강사님 작은 궁금한 점이 있어 질문 남깁니다.1-O 이 문제에서 int, long long 둘 다 백준에서 정답 처리가 되는데 원래 long long을 써야하는데 큰 테스트케이스가 없어서 통과되는 건가요 아니면 int도 맞는 건가요??계산이 잘 안되어서 큰 값인거 같은데 헷갈리면 코테에서 int 대신 long long을 써도 아무 상관 없나요??
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
제가 푼 방식이 시간이 좀 오래 걸리는 것 같아 질문합니다.
안녕하세요!제가 queue와 구조체를 이용해 문제를 풀었는데 1초가 넘게 걸려서 무엇이 문제인지 질문합니다queue의 push, pop은 O(1)이라고 알고 있는데도 이렇게 오래 걸려서..제가 유추하기로는 구조체를 썼기 때문인 것 같은데...만약 그렇다면 왜 그런 것인가요...?코드 아래 첨부합니다.#include<cstdio> using namespace std; #include<vector> #include<algorithm> #include<string> #include<queue> int main(void) { //cin.tie(NULL); // 얘네 3줄은 iostream include했을 때 필요한 것. //cout.tie(NULL); //ios::sync_with_stdio(false); freopen("in4.txt", "rt", stdin); // 파일 입력받음 struct NumWork { int work; // 작업 번호 int t; // 작업 시간 }; int n, k; scanf("%d", &n); queue<NumWork> work; for (int i = 0; i < n; i++) { int tmp; scanf("%d", &tmp); work.push(NumWork{ i + 1, tmp }); } scanf("%d", &k); int time = 0; // 총 시간 while (work.empty() == false) { if (time == k) // 만약 k초면 break; break; NumWork now = work.front(); work.pop(); time++; // 시간은 언제나 흐르므로 ++ if (now.t - 1 == 0) // 작업시간이 0됐으면 다시 queue에 넣지 않음 continue; work.push(NumWork{ now.work, now.t - 1 }); } if (work.empty()) // work가 empty면 모든 작업이 k이전에 끝난 것 printf("-1"); else // empty가 아니면 k초 이후에 작업이 남아있었음 printf("%d", work.front().work); }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
순열을 재귀함수로 구현했을 때의 장점
안녕하세요, 선생님 다름이 아니라 순열을 재귀 함수로 구현했을 때의 장점이 많을 것 같아 질문 드립니다. 선생님께서 영상 중간에 재귀 함수로 순열을 구현하는 것보다 next_permutation을 사용하여 순열을 구현하는 것이 더 좋다고 말씀하셨습니다. 저 또한 선생님께서 말씀하신 부분을 충분히 동의하지만, 한 가지 의문이 드는 부분이 있습니다. next_permutation을 통해 순열을 구현하고자 할 때, 순열을 적용하고자 하는 컨테이너가 정렬되어 있어야 한다는 전제 조건이 필요합니다. 따라서 우리가 어떤 알고리듬 문제를 next_permutation으로 해결하고자 할 때, 평균적으로 O(nlogn)의 성능이 필요합니다. 반면, 재귀 함수로 순열을 구현하는 경우 순열을 적용하고자 하는 컨테이너의 순서와 상관없이 순열을 바로 적용할 수 있습니다. 그렇다면, 재귀 함수를 통해 순열을 구현하는 방법을 선호하는 것이 더 좋지 않을까요? 물론, 재귀 함수를 처리하는 데 드는 비용이 정렬을 처리하는 데 드는 비용보다 높다면 next_permutation 함수를 사용하는 것이 더 효율적이라고 생각합니다! 항상 좋은 강의 해주셔서 감사합니다 ㅎㅎ!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F질문있습니다!
안녕하세요. 선생님좋은수업 열심히 듣고 있습니다!4-F문제의 선생님 코드에 대해 질문이 있는데요. 선생님이 만든신 go함수의 기저사례는 index==26일때 발동하잖아요. 그럼 k값이 양수일때, 즉 아직 더 배울 수 있는 상황에서도 count함수를 호출하는 건가요?감사합니다!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
9번 모두의 약수 for문 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 처음 하는 c++수업인데 좋은 강의 잘 듣고 있습니다.선생님께서 말씀하신 i의 배수를 통해 개수를 구한다고 하셨는데for (int i = 1; i <= a; i++) { for(int j=i; j<=a; j=j+i) { cnt[j]++; }for(j=i; j<=a; j=j+i)부분 에서 j=j+i가 어떻게 i배수로 되는지 이해가 되질 않습니다. 제가 알기론 증감 부분인데 그러면 j=j+i에서 i=1, j=1일때 j=1+1로 2가 되면서 1~2로 cnt[1] cnt[2]에만 cnt[j]에 1씩 들어가고i=2일떄 j=2가 되면서 j=2+2=4가 되는데 그러면cnt[2]=2 cnt[4]=1이 되는게 맞는건가요?
-
미해결홍정모의 따라하며 배우는 C++
cout << (bValue ? 1 : 0 ) <<"입니다"; 라는 코드에서 삼항연산자에 괄호 유무 차이에 따른 오류 질문입니다.
cout << (bValue ? 1 : 0 ) <<"입니다"; 라는 코드에서 삼항연산자에 괄호 유무 차이에 따른 오류 질문입니다.cout << bValue ? 1 : 0 라고 입력시 잘 동작하지만 삼항연산자 이후 endl이나 추가적인 문구를 추가해보니 오류가 발생합니다. 하지만 괄호로 묶었을 땐 정상 동작을 하는것을 보고 왜 괄호가 필요한지 의문이 생겨서 질문 남깁니다.