묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C++
13.4 if문
강의 13.4에서 2분 30초쯤에T가 char타입일 때 어떤 동작을 더 추가해서 실행하기 위해서 컴파일 타임에 해야 되기 때문에 if문을 사용할 수 없다고 하셨는데템플릿 매개변수는 컴파일 타임에 다 정의되어야 한다고 이해했는데 그러면 왜 if문으로 쓸 수 없나요?밑에 코드처럼 작성하면 되지 않나요??template<typename T> T getMax(T x, T y) { if (std::is_same<T, int>::value) { // x와 y가 int 타입인 경우에 대한 동작 // ... } else if (std::is_same<T, double>::value) { // x와 y가 double 타입인 경우에 대한 동작 // ... } else { // 기타 타입에 대한 동작 // ... } return (x > y) ? x : y; }
-
미해결홍정모의 따라하며 배우는 C++
1.5 복습문제
선생님께서 이걸 복습으로 만들어보라고 하셨습니다.숫자 2개를 입력 받아서 그 더하기를 출력하는 프로그램 만들기그걸 function로 쪼개서 숫자 2개를 사용자로부터 여러 번 입력을 받고그 더하기를 여러 번 출력하는 것 만들어보기. int addTwoNumbers(int a, int b){ return a + b;}int main(){ int c, d; cin >> c >> d; int sum = addTwoNumbers(c, d); cout << sum << endl; return 0;} 이렇게 만들었는데 이게 선생님께서 원하시는 것일까요?ㅠ
-
미해결홍정모의 따라하며 배우는 C++
1.5 void 함수
15:00 부근에서 선생님께서 "이 void function는 기능을 수행하기 때문에 main function한테 다시 return해줄 게 없다"고 하셨는데 살짝 헷갈려서 질문드립니다! void function은 출력을 하기 때문에 메인 함수에 리턴 해줄 것이 없다는 것은 확실히 이해했습니다.근데 이것을 기능을 수행한다고 표현하셔서 헷갈리는데 그럼 일반적으로 리턴하는 함수(ex 2개의 수를 더하는 함수)들은 기능을 수행하지 않는다고 보시는 건가요? 그렇다면 이 일반적인 함수들은 무엇을 한다고 표현해야 하나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
지훈이가 불에 뛰어드는 건에 관하여 질문
안녕하세요 큰돌님~!https://www.acmicpc.net/source/share/d9a60c043e7d428bac7374f83c5ca09d제공해주신 소스 지훈이의 while문에서요if(!in(ny,nx)) continue;if(person_check[ny][nx] || a[ny][nx]=='#') continue;if(fire_check[ny][nx] <= person_check[y][x] + 1) continue;위 if문들만 체크한다면 지훈이가 이미 불이 난 위치에 뛰어드는 경우까지 큐에 푸시되지 않나요? 통과는 되는데 히든 테스트 케이스에 위 로직을 체크하는 케이스가 있어도 통과될 수 있는 것인가용? 제가 놓치고 있는 것이 무엇인지 질문드립니다!
-
해결됨홍정모의 따라하며 배우는 C++
매개 변수 / 인자 / 인수
안녕하세요?선생님께서 설명해주셔서매개변수(parameter)와 argument(인수)의 차이점은 확실히 이해했습니다.그런데 여기서 <인자>라는 용어가 또 나오는데 인자는 매개변수와 인수와 어떻게 다른 건가요?인자와 다른 것들의 차이점이 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-P 디버깅 질문입니다
이 문제를 처음 풀 때, 저는 씨를 심을 수 있는 공간을 3개를 뽑고, 각 공간마다 꽃이 필 수 있을 때만 ret값을 초기화 하는 형태로 짰었습니다.http://boj.kr/95d7faf9296842c2b79fdd40a1c85a75위의 링크에 있는 로직 중 48-49행의 로직이 틀려서 제출하면 '틀렸습니다'라고 뜹니다.결국 코드 하나하나 뜯어봐서 48-49행의 로직이 틀렸다는 것을 지금은 알지만 디버깅을 통해서 '48-49행의 로직이 틀렸구나!' 라는걸 알고 싶어서 제 로직 중 어느 곳에 디버깅을 해야 48-49행이 틀렸는지 알고 싶습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
split 함수 문의드립니다.
강의 잘 수강하였습니다. split 함수 정의해주신거 관련해서 문의가 있어서요. 만약 delimeter 가 input 에 포함되어 있지 않은 경우에는 input 전체가 하나 들어간 vector가 들어가야 할거 같은데 마지막 예제에서는 그런 처리가 안된거 같아서요. 최초 token 정의 할때, input을 세팅해놓으면 되지않을까 싶은데 확인 부탁드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[5-L] 시간복잡도 계산 코멘트 요청
안녕하세요 큰돌 선생님!!5-L 문제 접근할 때 비트마스킹을 못 떠올려서, 전체 인원 중에 절반 인원을 뽑는 조합으로 생각했습니다.최대치로 가정하고 계산한다면, 20C10이 되는데요. 선생님은 비트마스킹을 써야 한다는 것을 조합과 어떻게 구분하셨는지 코멘트 주시면 감사하겠습니다..!앞에 aass0930님 질문글을 읽어보아도 제가 생각했던 로직에 대한 답을 찾을 수 없어서 이렇게 추가적으로 질문 드렸습니다!추가 질문) 경우의 수로 접근한다면, 스타트 팀에 인원을 먼저 배정한다고 했을 때 20 * 19 의 경우의 수가 나오는건가요? 항상 감사합니다 :)
-
미해결홍정모의 따라하며 배우는 C++
메모리 주소
int x;x = 123;이 상황에서 &x를 출력하면 16진수로 이루어진 x의 주소를 알 수 있습니다.12:35 부근에서,선생님께서 프로그래머가 123 숫자에 대한 주소를 갖고 오기가 어렵다고 하셨는데,이것에 대한 질문을 해보았더니, 답변해주신 분께서"literal을 할당한 변수의 주소 (&x)는 알아낼 수 있어도literal 123의 주소를 직접적으로 알아낼 수 없습니다."라고 합니다....그런데 literal을 할당한 변수의 주소와 literal 123의 주소의 차이점을 모르겠습니다...ㅠㅠㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-J강의 질문
안녕하세요, 큰돌님. 강의 내용에서 크게 로직이 2개 정도 있는데, 그 중 1번 미래에 콘센트 구멍 개수만큼 미리 살핀 다음에, 존재하지 않는 건 뽑고 교체를 해준다는 로직은 이해하였습니다.그런데 가장 먼 미래에 참조되는(마지막) 거를 뽑는 건 이유가 무엇일까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H 질문드립니다.
안녕하세요 선생님. 강의 항상 잘 보고 있습니다.Q1. 수빈이와 동생의 위치가 같을때는 고려하지 않아도 되나요?(답지를 보니까 그런 코드가 없어서 질문 드립니다.)만약 고려하지 않아도 된다고 한다면, 8-G(12851번 문제 - 숨바꼭질2) 에서는 왜 고려해야 했나요??(제가보기엔 같은 문제 같은데요..ㅎㅎ)Q2. 이 부분이 꼭 있어야 하나요? 만약 그렇다면 시간복잡도를 줄이기 위해 그렇게 하신건지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L 1940 주몽 투포인터 질문
안녕하세요 큰돌님, 언제나 좋은 강의 감사드립니다. http://boj.kr/0fccef48c8244d0a8b213e480cb8b80a 다시 한 번 풀고자, 단순 for문에서 투 포인터를 생각해서 풀었습니다. 저 코드는 정답이지만, 처음에 틀려서 원인을 몰라 고민을 계속하다가 l < r인 것을 l <= r로 해서 틀렸었습니다. 궁금한 것이 왜 l <= r이면 안되는 것일까요? l == r인 경우에 동일한 배열 인덱스를 참조하는 것이니 안된다고 생각하면 될까요? 좋은 강의 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-G 문제 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. return a.first> b.first; 부분이 이해가 잘 안되는것 같습니다.저는 부등호가 반대로'<' 인거 같은데 제가 헷갈리고 있는거 같아서 질문드립니다.감사합니다.!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1 - J 질문입니다
안녕하세요 선생님, 코드에서 이해가 안되는 점이 있어서 질문드립니다!_map[b]++ 에서 b만 더해가는게 의상종류는 상관없어서 하나만 넣어서 더하는건가요?ret *=((long long)c.second + 1); 에서 c.second로 끄집어내는게 b를 더해서 인가요?
-
미해결홍정모의 따라하며 배우는 C++
13:00쯤에서 getline 이슈
#include <iostream> #include <string> using namespace std; int main() { // CASE 1 cout << "Your name?: "; string name; // std::string cin >> name; // NO white space; jack jack cout << "Age?: "; string age; cin >> age; // jack cout << "CASE 1 " << name << " & " << age << endl; cout << endl; // CASE 2 cout << "Your name?: "; string name2; // std::string std::getline(std::cin, name2); cout << "Age?: "; string age2; std::getline(std::cin, age2); cout << "CASE 2 " << name2 << " & " << age2 << endl; cout << endl; return 0; } >> Your name?: jack Age?: 1 CASE 1 jack & 1 Your name?: Age?: 2 CASE 2 & 2 안녕하세요, 위 코드를 입력하면 CASE1에서 엔터치면, CASE2에서 name2는 그냥 넘어가 age2와 같은 값을 갖게 되는 이유가 무엇인가요? 제가 추론하기로는, cin >> age에서, ">>" operator가 age의 string만 읽고 delimiter인 line breaker를 buffer로 가지고 있는 것 같습니다. 그래서 std::getline에서 delimiter(즉, remaining line breaker)를 읽는 것 같습니다.그런데 name2는 어떻게 age2와 같은 값을 갖게 되는지 전혀 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1 - E 질문입니다
안녕하세요 선생님, 수업 잘 듣고 있습니다.문제 내용 중에 '첫 글자가 같은 5명의 선수를 비교' 해야 할 것 같은데, 이건 해설풀이 중에 어느부분에서 해석할 수 있을까요?선수이름(s)을 받아서 앞쪽으로 당긴 다음에 더해간다, 나중에 'a'값을 더해서 원래 소문자를 구해서 출력한다, 까지는 이해하겠는데 문의드린 부분이 이해가 안가서요ㅜ 아니면 선생님 코드는 비교 안해도 값이 나오는 건가요..?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
구름 IDE에서 cin, scanf 입력받기
안녕하세요.곧 코딩테스트가 있어 문의드려요..강의와 무관하지만; 물어볼 곳이 없어 글을 남깁니다.구름 IDE로 볼 예정인데 거기선 cin,scanf 입력을 어디에 넣나요;;? 평소에는 dev c++로 돌려보는데 그건 디버깅을 하면 새 창이 떠서 거기에 입력 값을 넣었거든요.ㅠㅠ 구름 쪽에 문의 했는데 답이 없어 선생님께 문의드려용 ㅠㅠ..
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-B 맞왜틀, 모범답안 질문
http://boj.kr/53420caa64384937bd61e46faf8210a7안녕하세요 강사님 제 풀이가 강사님 풀이 메인로직이랑 다르긴 하지만 그래도 논리는 맞는데 틀렸다고 떠서 왜 틀렸는지 질문올립니다!그리구 강사님 모범답안 코드 중for(char a : str){ cnt[a - 'a']++; }이부분이 전체적으로 이해가 안돼서 부연 설명 부탁드려요ㅠㅠ강의 내용 중 cnt['a'] 가 cnt[97]이라는 설명이랑 122-97을 통해 배열을 앞으로 땡겨서 cnt[0~25]를 만든다는 설명은 이해가 가는데, 그래서 왜 cnt[a - 'a']++; 이 문장이 나오는건지는 잘 모르겠어요ㅠ122-97을 하려면 cnt['z' - 'a']가 아닌가요..?그리구 왜 앞의 a는 ''가 없고 뒤의 a는 ''가 있나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-I 시간초과 질문 있습니다.
#include <bits/stdc++.h> using namespace std; int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, M; cin >> N >> M; map<int, string> book; vector<string> answer; for (int i = 1; i <= N; i++) { string pokemon; cin >> pokemon; book[i] = pokemon; } for (int i = 0; i < M; i++) { string question; cin >> question; for (auto const &[k, v] : book) { if (to_string(k) == question || question == v) { answer.push_back(isalpha(question[0]) ? to_string(k) : v); break; } } } for (auto str : answer) cout << str << '\n'; return 0; }해당 코드에서 시간 초과가 나는데 for (auto const &[k, v] : book) { if (to_string(k) == question || question == v) { answer.push_back(isalpha(question[0]) ? to_string(k) : v); break; } }아마 이 부분에서 시간 초과가 나리라 생각합니다. O(NlogN) 일거 같은데 답안과 달리 map 1개와 find 만 써서 풀 수는 없는걸까요? 왜 시간초과가 나는지 이해가 잘 안갑니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
입출력싱크
안녕하세요 선생님 입출력싱크가 들어가는 위치는 어디가 되어야 하나요? using namespace std;밑에 바로 쓰면 에러가 나는것 같습니다. 메인함수 시작할때 항상 쓰시는거같은데 어디에 왜 그곳에 써야하는지 설명해주시면 감사하겠습니다! ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);