좋은 강의 감사드립니다! 헷갈려서 질문드립니다! 해당 강의에서 소개해주시는 next_permutation과 makePermutation은 nPr을 구하는 식에서 n과 r의 값이 같은 경우에만 사용할 수 있는게 맞을까요? n = 3, r = 3인 경우에만 사용할 수 있는 것인지, n = 3, r = 2에서도 사용할 수 있는 것인지 궁금합니다. makePermutation()에서는 vector의 값과 r의 값을 변경해가면서 해봤는데 제가 생각하는 것처럼 동작하지 않아서 질문드립니다! 감사합니다!
if(stk.size()&& stk.top ()==a) 부분이 이해가 안가는데 cin에 ABBABBAA를 입력하면 범위기반 for문을 통해 a가 ABBABBAA가 되어야한다고 생각하고 stk.top ()도 가장 마지막걸 참조하는거니까 제일 나중에 입력된 A가 참조되어야 한다고 생각하는데 왜 cout으로 찍어봤을때 B가 나오는지 이해를 못하겠습니다.. if(stk.size()&& stk.top ()==a) 이게 스택의 사이즈가 존재하면서 가장 마지막 스택이 a와 일치한다 라는건 알겠는데 막상 찍어보면 왜 저런 결과가 나오는지도 모르겠습니다.. 강의도 돌려보고 교안도 계속보면서 cout 위치 바꿔가면서 찍어보는데 모르겠습니다.. 수정) for문이 끝나는게 아니고 중괄호로 if랑 이어져서 알파벳 하나씩 독립적으로 적용해야 하는 사실을 깨달았습니다. 그러면 차근차근 쌓이면서 붕괴된다는것을 이해했습니다. 그러면 로직의 가장 처음에 A가 먼저 쌓일테니까 stk.top ()이 A이고 a는 ABBABBAA에서 가장 처음에 A를 데려오니까 붕괴된다라고 이해하기엔 또 cout으로 B가 제일 먼저 찍히는데 진짜 이해를 못하겠습니다 그냥 단순하게 B가 있는 상황에서 B가 들어오면 붕괴되는거 이해했는데 이걸 코드로 바꾸면 왜 stk.top ()==a인지 잘 모르겠어요.. 그걸 코드로 바꿨을때 a의 입장이 어떻게 변하는지 모르겠습니다 a의 입장에서 로직이 어떻게 진행되는지 알려주세요 ㅠㅠ 수정) 처음에 size가 0이니까 A가 1층에 push되고 A가 top인 상황에서 B가 입력되는데 A랑 B랑 다르니까 그 다음 B가 push되고 이제 B가 top인 상태에서 B가 들어오려고 하는데 여기서 top==a가 되면서 소거 되는게 맞나요?
http://boj.kr/1b020a2dc9ba4a3a9350e79277dcd361 C문법만 배우고 바로 알고리즘 뛰어들었는데 1-A부터 1-K까지 혼자서 100%풀어본 적이 한 번도 없었어요.. 로직은 혼자서 어느정도 구성한다 해도 스스로 조립을 못하는 경우도 많았고 로직 자체도 집중하면서 30분넘게 생각해도 이상하게 설계하는 것도 많았는데.. 드디어 강의 보기전에 혼자서 완성을 시켰네요 ㅠㅠ 질문)교안에 있는거 다 이해는 했지만 주로 사용하는게 아니면 자꾸 까먹거나 응용을 못하는데 그냥 문제에 나왔을 때 복습하면 안될까요? 교안을 100% 외워서 문제에 바로 적용시키는건 저한텐 너무 어려운 공부방법인것 같아요ㅠㅠ 예를 들어 강의 듣기 전 로직을 설계할 때 여기선 map을 쓰면 될거같은데 map에 key가 앞인지 value가 앞인지 헷갈린다 싶을 때 복습하는 방식으로요! 이렇게 해도 괜찮을까요?
http://boj.kr/52e2462c48d9428b8fed65ba1be10f27 먼저 문제보고 혼자 풀어본 후에 큰돌님꺼 보는식으로 공부하고 있습니다 bfs 이용해서 테스트케이스 모두 통과했었는데 4%에서 틀렸다고 뜨네용.. 혹시 반례나 제가 놓치고 있는 부분이 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 고민하다가 이렇게 하면 될 거 같아서 해봤는데, 런타임 에러가 발생합니다. 논리만 보면, 강사님이랑 비슷한 거 같은데, 완전 잘못간것일까요?? http://boj.kr/34380871ba87499d9065179a1e49a024
안녕하세요. 9.8 형 변환 강의를 듣던 중 이해가 되지 않는 부분이 있어서 질문합니다. 19~23줄에 있는 int형 변환 함수에 리턴타입이 없는이유가 궁금합니다. 함수가 클래스 내부변수에 이미 멤버로 정의가 되어있어서 변수에 접근할 수 있기 때문에 따로 리턴타입을 정의하지 않은건가요? 19줄 operator int 뒤에 있는 ()의 의미가 궁금합니다. 예를 들어 아래는 9-6 수업 첨자연산자 오버로딩의 예 입니다. int& operator [] (const int index) { return m_list[index]; } 그런데 이경우는 매개변수도 정의가 되어있고 리턴타입도 정의가 되어있어서 [ ] 안에 값을 넣음으로서 이러한 기능이 작동하는것으로 알고있었습니다. 그런데 19줄은 매개변수가 없어서 int뒤에오는 ()가 매개변수를 담는 ()인지 아니면 위 예에서 [ ]같이 사용되는것인지 모르겠습니다. [ ] 처럼사용되는것이라면 47줄에는 ( )안에 Cents가 아닌 int가 들어가있는데 어째서 정상작동하는것인지 모르겠습니다. 앞서 1,2번의 궁금증을 해결하기보다는 그냥 오버로딩이 이러한 형식으로 작동하고 47~49줄 처럼 형태는 다르지만 오버로딩을 배우기전 알고있던 기본적인 형변환방식에 모두 적용이된다 라고만 이해하고있으면 될까요?
#include<bits/stdc++.h> using namespace std; int n; string s, ori_s, pre, suf; int main(){ cin>>n; cin>>ori_s; int pos = ori_s.find('*'); pre = ori_s.substr(0,pos); suf = ori_s.substr(pos+1); for(int i=0;i<n;i++){ cin >> s; } for(int i=0;i<n;i++){ if(pre.size()+suf.size()>s.size()){ cout<<"NE\n"; }else{ if(pre==s.substr(0,pre.size())&&suf==s.substr(s.size()-suf.size())) cout<<"DA\n"; else cout<< "NE\n"; } } return 0; } cin이랑 cout이 따로 출력하게 썼는데 이건 왜 안되나요? 문제지에 입력예제 출력예제 따로 나와서 따로 해도 되나보다 싶었는데 이건 for문에서 cin에 대하여 즉각적으로 순환하지 않으면 틀렸다고 하는 것 같아요 이거에 대한 명확한 기준이 있나요? 1-G 이전까지는 별 문제는 없었습니다
안녕하세요. 우선 타 강의 플랫폼과 달리 큰돌님 강의는 개념과 문제풀이를 그림으로 그리면서 설명 해주셔서 너무 잘 듣고 있습니다. (C++ 은 안하고 Javascript로만 풀이 중) 그런데 비트연산자 개념강의 2번째 영상에서 일부 확인이 필요한 설명이 있는것 같아서 글 남깁니다. (오타는 이미 공지를 해주셨네요) 마지막 XOR 연산자에서 0은 1로 1은 0으로 라는 설명이 있는데 위키피디아에 설명된 것 처럼 각 자릿수를 비교해 같으면 0, 다르면 1이라는 설명이 맞지 않나 싶습니다. ( https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8A%B8_%EC%97%B0%EC%82%B0 ) 강의 중 예제로 보면 n = 5 이고 idx = 0 일 때 n ^= (1 << idx) = 101 ^ 001 = 100 ////////// 101 ^ 001 ----- 100 ////////// 앞에서부터 각 자릿수를 비교해보면 1과 0은 다르므로 1 , 0과 0은 같으므로 0 , 1과 1이 같으므로 0 이 아닌가 싶습니다.
안녕하세요. 맥북에서 세팅이 잘 안돼서 문의드립니다 sudo까지 해도 잘 안되네요;; (bits 디렉토리에 대한 권한은 Read Write 모두 가능한 상태입니다.) 그리고 앞으로 계속 이 디렉토리에서 진행하면 되는건가요? 뭐가 문제일까요? 찾아도 잘 안나와서 질문드립니다 ㅠㅠ 감사합니다. 추가) 경로를 bits/stdc++ 가 아닌 /Library/Developer/CommandLineTools/usr/include/bits/stdc++.h 으로 전체 경로를 넣으니깐 실행되긴하는데 그러면 상관없나요?
안녕하세요. 강의를 듣다보면 특정 시간대의 영상이 끊기거나 반복되는데요. 이 강의에서는 11분 35초에서 영상이 끊기고 한 5~10초 전의 영상이 다시 나와요. 이게 제 컴퓨터의 문제일까요 아니면 편집이 잘못된 걸까요? 생각보다 너무 자주 이런 문제가 발생하는데 뭔가 문제인지 궁금하고 해결할 수는 없는지 궁금합니다...
빨리 교안마무리하고싶은데 마음과 달리 잘 안되네요 ㅠㅠ 그래도 어렵다고 소문난 cpp를 배우고 있다는것에 감사합니다 제가 막히는 코드는 이러합니다. #include <bits/stdc++.h> using namespace std; vector<int> v; int main () { for(int i = 1; i <= 5; i++){ v.push_back(i); v.push_back(i); } for(int i : v) cout << i << " "; cout << '\n'; // 중복되지 않은 요소로 채운 후, 그 다음 이터레이터를 반환한다. auto it = unique(v.begin(), v.end()); //질문1. 여기서 v.begin()의 값과 v.end()값을출력하려면 어떻게 해야하나요? cout << v.begin() << '\n'; 을 해봤는데 되지 않더라구요 //질문2. v의 첫번째 값과 마지막값이 1과 5 아닌가요? v.begin() 과 v.end() 대신 1 과 5 를 어봤는데 에러가 났습니다 // 질문3. auto it 대신 int it 과 vector<int> it 을 넣어봤는데 에러가 납니다. 정확한 타입을 알고싶어서 cout << typeid(it).name() << '\n' 을 했었는데 에러는 아니지만 'N9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEE' 가 출력되었습니다. 어떻게하면 타입을 확인할수 있을까요? cout << it - v.begin() << '\n'; //질문 4. it-v.begin() 을 왜 하는지와 출력값이 왜 5인지 이해가되지 않습니다.. // 앞에서 부터 중복되지 않게 채운 후 나머지 요소들은 그대로 둔다. for(int i : v) cout << i << " "; cout << '\n'; return 0; }
유튜브를 보니까 일단 언어를 한달동안 공부후에 보면 좋다고 하셔서 현재 [하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문 - 판다코딩 님의 강의를 듣고 있는데 이 강의를 다 본 이후라면 큰돌님의 코딩테스트 강의를 수강할만 할까요? 현재 아무 지식없는 초보입니다
if(cnt % n == 0){ printf("%d\n", ret); break; }else{ cnt = (cnt * 10) + 1; cnt %= n; ret++; } 위 코드가 강사님 코드의 핵심 부분입니다. 모듈러 연산의 분배법칙을 코드로 옮긴 것은 위 코드가 아니라 if(cnt % n == 0){ printf("%d\n", ret); break; }else{ cnt = (cnt * 10) % n + 1%n; ret++; } 이어야 한다고 생각했습니다. 두 코드 모두 성공하는 코드이지만 두 코드가 미묘하게 다른데, 왜 동치인지 이해가 가지 않습니다. 모듈러 연산의 분배법칙은 (A + B) mod C = (A mod C + B mod C) mod C 입니다. 따라서, 강사님 코드에서 (cnt * 10)을 A 라 하고, 1 을 B 라 하면, (A + B) % N 이 됩니다. 반면, 제 코드는 A % N + B % N 입니다. 제 코드와 강사님 코드가 같으려면 제 코드에 %n 이 한번 더들어가 있어야 할거같은데..