inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

IntArray 숙제 올립니다.(수정해야 할 부분 알려주시면 감사합니다.)

미해결

홍정모의 따라하며 배우는 C++

#include <iostream> #include <vector> #include <array> #include <cstdarg> #include <cassert> #include <initializer_list> using namespace std; // 컨테이너 클래스(Container Classes) class IntArray { private: int m_capacity = 0; int m_length = 0; int* m_data = nullptr; public: //Constructors IntArray(std::initializer_list<int> values) { std::cout << "IntArray::IntArray " << std::endl; assert(values.size() >= 0); m_length = values.size(); m_capacity = m_length * 2; m_data = new int[m_capacity]; int ix = 0; for (auto value : values) { m_data[ix] = value; std::cout << m_data[ix] << ", "; ++ix; } std::cout << std::endl; } ~IntArray() { if (m_data != nullptr) reset(); } void reset() { delete[] m_data; m_data = nullptr; m_length = 0; m_capacity = 0; } void resize(const int& size) { assert(size >= 0); // size가 0보다 작거나 같을때 에러 발생 // 만약 m_data == nullptr 이면 새로 메모리를 잡음 if (m_data == nullptr) { m_length = size; m_capacity = m_length * 2; m_data = new int[m_capacity]; } // 만약 현재 m_capacity보다 m_length가 크다면 다시 용량 재할당 해준다. if (m_length >= m_capacity) { m_capacity *= 2; int* temp = new int[m_capacity]; for (int i = 0; i < m_length; ++i) temp[i] = m_data[i]; delete[] m_data; m_data = temp; } // 기존 사이즈보다 작은건 상관이 없다 인덱스 접근을 못하게 되니깐 } void insertBefore(const int& value, const int& ix) { assert(ix > 0); ++m_length; int index = m_length - 1; // 사이즈가 용량을 넘으면 다시 할당 if (m_length >= m_capacity) resize(m_length); for (int i = index; i <= index; --i) { if (ix == i) break; int curr = m_data[i]; int before = m_data[i - 1]; m_data[i] = m_data[i - 1]; } m_data[ix] = value; } void push_back(const int& value) { ++m_length; if (m_length >= m_capacity) resize(m_length); m_data[m_length - 1] = value; } friend std::ostream& operator<<(std::ostream& out, const IntArray& data) { for (int i = 0; i < data.m_length; ++i) { if (i != 0) out << ", "; out << data.m_data[i]; } return out; } void remove(const int& ix) { assert(ix >= 0); int tempIx = m_length; --m_length; for (int i = ix; i <= m_length; ++i) { m_data[i] = m_data[i + 1]; } } }; int main() { IntArray my_arr{ 1,2,3,4,5 }; my_arr.push_back(100); cout << my_arr << endl; my_arr.push_back(200); cout << my_arr << endl; my_arr.push_back(300); cout << my_arr << endl; my_arr.push_back(400); cout << my_arr << endl; my_arr.insertBefore(50, 3); cout << my_arr << endl; my_arr.push_back(600); my_arr.push_back(700); my_arr.push_back(800); my_arr.push_back(900); my_arr.push_back(1000); cout << my_arr << endl; my_arr.remove(5); cout << my_arr << endl; return 0; }

  • c++
yoodud 댓글 2 좋아요 1 조회수 201

학습 방법 문의 드립니다!

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요, 큰돌님! 현재 이직을 위해 코테 준비를 하려고 하는데, 평소 Java 만 사용하다보니 cpp 은 거의 모르는 상태 입니다. (재작년 이직 할 때 잠깐 강의 보면서 따라 쳤던 경험만 있습니다.) 예전에 큰돌님 강의 보면서 공부할 때는 교안은 따로 안보고 주차 별 문제 풀이만 계속 진행 했었는데요. 이번에는 조금 더 천천히 그리고 하나부터 제대로 공부해보려고 합니다. 그래서 커뮤니티에 선배님들이 남긴 글 보니까 교안을 먼저 1회독하고 시작하라고 하는데 어떤 교안을 말씀하는건지 헷갈려서요.. 이해한 바로는 10주차 알고리즘 교안(cpp 과 친해지기) 1회독 후 알고리즘 개념 교안 + 0주차 강의 부터 쭉 진행하면 되는걸까요?

  • c++
  • 코딩-테스트
슴발 댓글 2 좋아요 0 조회수 277

7-L 질문있습니다 :)

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님 🙂 DP에 가장 큰 약점이 있다고 생각했었는데요, 문제를 다시 반복하면서 풀다보니 어떤 경우에 DP 개념을 사용해야하는지 이제는 알 것 같습니다 ㅎㅎ 선생님 덕분에 실력이 크게 늘었습니다! 감사합니다 🙂 아래는 제 코드입니다. 정답을 맞췄고, 따지고보면 제 로직과 선생님의 로직 차이는 없지만 고민되는 부분이 있습니다. http://boj.kr/ddecf034ffd645bea03218ddefb81d38 예전에 같은 회사의 시험을 본 사람들의 후기글을 본 적이 있습니다. 참고로 이 회사는 서류제출을 하면 코딩테스트를 보고, 종합해서 서류심사를 하는 회사입니다. 어떤 사람은 6문제 중에 5문제를 맞췄는데 떨어졌고, 어떤 사람은 6문제 중에 3문제를 맞췄는데 면접을 봤다는 글을 본 적이 있습니다. 제가 생각한 이유는 아래와 같습니다. 코딩테스트를 잘봐도 제출한 서류에 문제가 있었을 수도 있다. 최적 알고리즘을 선택하지 않아 효율적인 풀이가 아니었다. 코드의 가독성이 좋지 않거나, 간결성이 부족하다. 위의 3가지 중에서 3번이 고민입니다. 선생님의 코드와 제가 방금 풀이한 코드를 비교해보면 제 코드가 1줄 더 많습니다. 좀더 딥하게 들어가보면, 1줄로 작성할 수 있는걸 2줄로 작성한 것이죠. 이런 것도 문제가 될 수 있는지 궁금합니다..!!

  • c++
  • 코딩-테스트
한유태 댓글 2 좋아요 0 조회수 109

마지막 주소록 예제 c 파일 한글 깨짐 현상

해결됨

C개발자를 위한 최소한의 C++

안녕하세요, 강사님! 양질의 강의 제공해 주셔서 감사합니다. 완강까지 마지막 주소록 예제만을 남겨두고 있는데, 다른 cpp 예제들에서는 보이지 않던 한글 깨짐 현상이 발생해 진행에 어려움을 겪고 있습니다. 혹시 해결 방법이 있을까요?

  • c++
  • microsoft-windows
sh 댓글 1 좋아요 0 조회수 228

안녕하세요 강사님 정렬에 대해서 설명이 조금 더 듣고 싶습니다.

미해결

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

#include <queue> #include <iostream> #include <vector> #include <set> using namespace std; int N; vector<vector<int>> n; vector<int> ch; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); FILE* fp; freopen_s(&fp, "input.txt", "rt", stdin); cin >> N; ch.resize(N, 0); for (int i = 1; i <= N; i++) { int a, h, w; cin >> a >> h >> w; n.push_back({ a, h, w }); } //sort(n.begin(), n.end(), [](const vector<int>& a, const vector<int>& b) { // return a[0] > b[0]; }); int max = 0; ch[0] = n[0][1]; for (int i = 1; i < N; i++) { int a1 = n[i][0]; int h1 = n[i][1]; int w1 = n[i][2]; int res = h1; for (int j = 0; j < i; j++) { int a2 = n[j][0]; int h2 = ch[j]; int w2 = n[j][2]; if (a1 < a2 && w1 < w2) { if (h1 + h2 > res) { res = h1 + h2; } } } ch[i] = res; if (res > max) { max = res; } } cout << max; } 강사님께서도 정렬을 먼저 하고서 알고리즘의 진행을 설명해 주셨는데, 저런식으로 조건을 넣어 줄 경우 정렬을 하지 않아도 상관이 없을 것 같았는데 답이 다르게 나오더군요. 무슨 차이인가요?

  • c++
  • 코딩-테스트
kjwon4105 댓글 1 좋아요 0 조회수 136

6 - G 반례 (-1 출력)

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

제가 생각한 반례가 맞는지 여쭤보고 싶어 질문 드립니다! 틀린 코드: http://boj.kr/14b153f8d05946abab1e61585a86d685 맞는 코드: http://boj.kr/ec182d95af3a4eee981ba3b00db1688a 두 코드의 차이는 -1 출력 조건인 거 같습니다! 하단은 틀린 코드에서 -1 출력 부분 조건입니다. if (x == y) { return 0; } 위 처럼 되면 추가 게임 횟수를 최대 범위인 10억까지 채웠지만 z의 값이 변하지 못 할 수도 있기 때문에, 이런 경우 때문에 틀린 거 같습니다! 혹시 제가 생각한 반례가 맞을까요..! 그 외에는 x==y인 경우로 걸러낼 수 있다고 생각합니다! 아래는 정답 코드 부분입니다! int main() { cin >> x >> y; z = (((ll)y * 100 / x)); origin = z; ll lo = 1, hi = 1000000004; while (lo <= hi) { ll mid = (lo + hi) / 2; z = (((ll)((y + mid) * 100) / (x + mid))); if (z != origin) { ret = min(ret, mid); hi = mid - 1; } else { lo = mid + 1; } } if (ret == LLONG_MAX) { cout << -1 << '\n'; } else { cout << ret << '\n'; } }

  • c++
  • 코딩-테스트
자르트 댓글 3 좋아요 0 조회수 164

플로이드 관련 강의 / 교재 수정 제안 드립니다

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

큰돌님 안녕하세요? 플로이드 보던 중 이상한 코드가 보여서 게시글 올립니다. 개념강의에서 11404 플로이드 문제를 예시르 들어주셨는데요 정답 코드가 좀 이상해서 제안 드리게 되었습니다. 아래 스샷 인데요, 삼항연산자는 필요가 없습니다 (이미 fill 로 INF로 초기화 했으므로) dist[a][b] = min (dist[a][b],c); 로 바꾸는게 어떨지 제안 드립니다.

  • c++
  • 코딩-테스트
mhyim 댓글 2 좋아요 0 조회수 115

7-G 질문있습니다 :)

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님 🙂 문제의 반례를 못찾겠어서 질문드립니다. 36번째 줄에 있는 dp[temp] = 1;이 들어가면 배열의 범위가 초과되는 경우가 있다고 하는데요, 어떤 반례가 있는지 잘 모르겠습니다. 1, 5, 12의 테스트케이스들을 전부 1로 초기화하면 안되는 이유가 있을까요? http://boj.kr/5855aa6cbb0b4df1acddd8288205e6cb

  • c++
  • 코딩-테스트
한유태 댓글 1 좋아요 0 조회수 96

7-C 질문입니다. 문제에서 메모이제이션이라는 개념이 잘 와닿지가 않습니다..

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

메모이제이션이란 반복된 계산을 피해 시간을 단축시키는 기법이라고 이해하고 있습니다. 근데 이 문제에서는 잘 와닿지가 않습니다.. 이 경우에 (3,1)에서 이미 dp가 1로 셋팅이 되어 있어서 바로 1을 반환하게 되는데.. 1로 셋팅된 값이 그 이상의 값으로 셋팅되는 경우의 수는 없을까요? 저렇게 가차없이 바로 return해도 되나 좀 복잡합니다.. 답변주시면 감사하겠습니다!

  • c++
  • 코딩-테스트
mch473700 댓글 2 좋아요 0 조회수 140

2 - S 질문 있습니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요. 강의를 듣고 힌트를 얻어서 어찌저찌 백준에서역시 통과를 하게 되었습니다. 그런데, 이해가 안되는 부분이 하나 있어서 질문을 하고싶습니다. 제가 다이나믹 테이블의 선언을 처음에는 코드의 38번째 줄에서 하였습니다. 그 이유는 결국 시작을 어디에서 하던지 간에 다이나믹 테이블의 값은 똑같다고 생각해서이기 때문입니다. 하지만 다이나믹 테이블의 선언을 루프 외부, 38번째 줄을 하니 문제가 틀리고, 내부, 40번째 줄을 하니 테스트를 통과 했습니다. 그렇다는 말은 DFS 진입지점에 따라 다이나믹 테이블의 값이 변한다는 말인데, 하나밖에 없는 테스트 케이스로는 왜 변하는지 원인을 찾을 수 가 없습니다. 어떤 케이스, 어떤 반례에서 다이나믹 테이블을 루프 밖으로 꺼냈을때 DFS의 진입지점마다 다이나믹 테이블의 값이 변하게 되나요? https://www.acmicpc.net/source/share/aa38ef94ed944749bfc167ca340deca4 1줄 요약: 다이나믹 테이블의 선언을 38번째 줄에 해도 돌아갈것 같은데 안돌아가고 40번째 줄에 하면 돌아가는데 이유를 모르겠음.

  • c++
  • 코딩-테스트
비스킷 댓글 2 좋아요 0 조회수 101

7-B Check함수 질문있습니다 :)

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님 🙂 저는 자주 반대로 생각하는 것 같습니다. 문제를 다시 풀어봤는데요, Check함수의 조건을 선생님과는 다르게 벽이 있을 경우에 return false로 두었습니다. 아무리 봐도 벽이 없을 경우에 return true로 두는거랑 차이가 없는 코드라고 생각하는데요, 무엇이 잘못된건지 알려주시면 감사하겠습니다..!! http://boj.kr/472edaa9bfdf43be89ea926f3acf6a4e

  • c++
  • 코딩-테스트
한유태 댓글 2 좋아요 0 조회수 146

7-I 문제 37%에서 틀리는데 실수<--> 정수 문제일까요?

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

큰돌님 안녕하세요? 제가 해당 문제 풀면서 아이디어는 맞다고 생각이 되는데 실수로 받는걸 (int)(실수*100) 해서 정수형으로 넣어서 풀려니까 했는데 37%에서 틀려서 질문 들립니다. 큰돌님하고 코드 차이가 있다면 scanf왜 cin정도밖에 모르겠습니다. 제 코드 어디가 잘못되었는지 조언 주실 수 있을까요? http://boj.kr/ca02767551c24c84bb23432a91b19f23

  • c++
  • 코딩-테스트
mhyim 댓글 3 좋아요 0 조회수 202

6-C 질문있습니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 선생님. 수업 잘 듣고 있습니다. 이 부분을 왜 6-B 문제처럼 안 하셨는지 궁금합니다. 빨간 부분을 안 하면 mid 값이 check(mid)에서 넣은 mid 값이랑 다르지 않나요?

  • c++
  • 코딩-테스트
이원진 댓글 1 좋아요 0 조회수 83

4.2 강의 46분 &Constatns 주소를 같게 만드는 방법

미해결

홍정모의 따라하며 배우는 C++

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 4.2 강의 46분 정도에 &Constants 주소를 같게 만들기 위해서 헤더파일에서 extern const double pi; 이렇게 선언만 하고 다른 cpp 파일에서 extern const double pi = 3.141592; 이렇게 하면 같아지는 이유가 잘 이해가 되지 않습니다. cpp 파일에서 const로 할당해야만 주소가 고정이 되는건가요?

  • c++
lahat 댓글 2 좋아요 2 조회수 139

2-R 맞왜틀 질문있습니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요. 처음에 재귀가 떠오르지 않아 반복문으로 구현을 했는데, 테스트 케이스는 전부 맞는데, 내부에서 틀린듯 합니다. 아쉽게도 다른 사람들은 77%에서 터지는데, 저는 1%에서 터지는군요... 나름 로직은 맞다고 생각하는데 백준에서 어떤 테스트가 왜 틀렸는지 알려주지 않아 답답해 여기에 질문을 올려봅니다. 제가 어떤 부분을 놓쳤나요? http://boj.kr/55f3b362377b463397c0298ec922cdf0

  • c++
  • 코딩-테스트
비스킷 댓글 2 좋아요 0 조회수 107

너무 기본적인 개념 질문드려서 죄송합니다.. ㅠㅠ

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님 🙂 플로이드 와샬 개념문제로 11404번 문제를 풀다가 갑자기 삼항연산자의 개념이 헷갈려졌습니다 ㅠㅠ 구글링해도 기본적인 설명만 있고, 교안도 삼항 연산자 관련 내용이 없어서 질문 드립니다.. http://boj.kr/eefe3db0d7aa4338bfffb83a6233db67 // 입력 부분 dist[a][b] = INF ? min(dist[a][b], c) : c; // 출력 부분 else cout << (dist[i][j] == INF ? 0 : dist[i][j]) << " "; 입력 부분에 ==가 아닌 =가 들어가는 이유를 모르겠습니다. 또, = 대신 ==를 넣으면 안되는 이유를 모르겠습니다. 제가 아는 삼항 연산자는 if (dist[i][j] == INF) 라는 조건을 만족하면 dist[i][j]가 왼쪽이 되고, 만족하지 않으면 dist[i][j]가 오른쪽이 되는 것을 한 줄로 요약한 코드라고 알고 있습니다. 개념이 심하게 헷갈리네요 ㅠㅠ 알려주시면 감사하겠습니다..!!

  • c++
  • 코딩-테스트
한유태 댓글 1 좋아요 0 조회수 122

어느 부분에서 안되는 건지 모르겠습니다.(먼지 제거할때)

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 해당 코드로 하니까 실패했고 http://boj.kr/b594a33a5cd74e75aef53810caed4d31 해당 코드로 cleanDust부분을 변경하니까 맞았습니다. 왜 1번 처럼 cleanDust를 해주는 거는 틀린 걸까요? http://boj.kr/da76558b5fd7483caa9fe86f42569358

  • c++
  • 코딩-테스트
김라영 댓글 2 좋아요 0 조회수 97

개념 강의 중 다익스트라 1753번 질문있습니다 :)

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님 🙂 벌써 마지막 강의네요 ^^ 감회가 새롭습니다. 선생님께서 작성하신 코드를 제가 알아보기 편하게 변경하고 있습니다. 입력 값을 u, v, w 순서대로 입력을 하였는데 adj배열과 우선순위 큐의 입력을 w, v 순서대로 하셨더라구요. 이걸 v, w 순서대로 입력을 바꾸면 시간초과가 납니다. 30분넘게 검증을 거쳤으나, 변수 이름 변경 과정에서 실수가 있는 것 같지는 않았습니다. 혹시나 제가 실수한 것인지, 실수가 없다면 시간초과가 나오는 이유가 무엇인지 알려주시면 감사하겠습니다 🙂 http://boj.kr/38a80ad865d4417ab06bc379f7111a5e

  • c++
  • 코딩-테스트
한유태 댓글 2 좋아요 0 조회수 94

시간초과 원인을 잘 모르겠습니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/9f72a1bbc1464292ac2339624d68b9d6 도움 요청드립니다...ㅠㅠ

  • c++
  • 코딩-테스트
여울 댓글 3 좋아요 0 조회수 259

컴파일 에러가 나는데 원인을 모르겠어요 ㅜㅜ

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/b607e5846a7142e7b6c87f146bc1a3c9

  • c++
  • 코딩-테스트
이진우 댓글 3 좋아요 0 조회수 191

인기 태그

인프런 TOP Writers

주간 인기글