묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 시간복잡도, 반복문 횟수 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.for(int k= 1; k<= 100; k++) { for(int i= 0; i< N; i++) { for(int j= 0; j< N; j++) { if(a[i][j]<= k) { b[i][j]= 1; } } } } 높이를 1부터 쭉 돌면 시간복잡도가 커져서 선뜻 코딩 하기를 주저했는데 문제에서 주어진 범위가 작고, 모든 반복문을 돌아도 1억회보다 작은 1,000,000회여서 위와 같이 짜도 상관 없다. 이렇게 이해하면 맞는 이해인가요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-M 벡터 사이즈 체크하면 오류 발생하는 이유
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요저는 벡터로 고민해서 풀었는데 강의 보고 수정해서 아래와 같이 정답을 얻었습니다.http://boj.kr/cf7d8a2646b44ded93eead10652c3faa 기존 제 코드랑 비교하니 이 부분이 문제 였는데요else if(s1.size()>2) break;http://boj.kr/7069ece2a56f46f49d7a764d5457677f 단어는 어차피 A와 B로만 이루어져있고 같은 단어가 들어오면 pop해서 사이즈가 줄어들어 사이즈가 2가 넘을 이유는 없다고 생각하여 넣은 코드입니다. 1개차이로 다른 단어가 들어오면 좋은단어 조건이 안되니까 사이즈 체크한건데 왜 오류가 발생할까요? (예를들어 ABA인 경우같이 B다음 1개차이로 A가 들어오는 경우) 저는 저 코드를 넣지 않으면 ABAAAAAAAAAAAAA와 같은 경우 불필요하게 끝까지 확인해야하니까... 필요한 부분이라고 생각했는데 어떤 부분을 잘못 생각한건지 알려주실 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 질문있습니다.
큐 자료형을 pair로 풀긴했는데 https://www.acmicpc.net/submit/14497/86181387 계속 메모리 초과가 나는데 이유를 모르겠습니다..https://www.acmicpc.net/submit/14497/86181412 큐 자료형을 바꿔도 똑같이 메모리 초과가 왜 나는 건가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - L 시간초과 질문있습니다.
안녕하세요. 백트레킹&원상복귀 적용하고 레퍼런스 매개변수로 넘겨주고 unorded_set으로 O(1)까지 적용했는데 시간초과가 나오네요... 제가 어느부분을 놓쳤을까요...?http://boj.kr/afa0abf888d948f59eefb9a57dd4e07e감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 2870번 런타임 에러 ㅠㅠ
테스트 케이스 실행해보면 전부 정상적으로 작동하는데, 왜 백준에 돌리기만 하면런타임 에러(out_of_range)가 나는지 잘 모르겠네요 ㅜ 계속 봤는데 도저히 모르겠어서 질문합니다.... 분명 int가 아니라 string으로 수정했는데, stoi를 사용하는 과정에서 난건가 싶기도 하고.. 도움 부탁드립니다... http://boj.kr/279c631f1e74406ca3551d6f7c15ed41
-
미해결
2-I 맞왜틀 질문 있습니다.
테스트 케이스 실행해보면 전부 정상적으로 작동하는데, 왜 백준에 돌리기만 하면런타임 에러(out_of_range)가 나는지 잘 모르겠네요 ㅜ 계속 봤는데 도저히 모르겠어서 질문합니다.... http://boj.kr/463283f35f114ed19c993fde1753ed6f 도움 부탁드립니다...
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - K 맞왜틀 질문있습니다.
안녕하세요. 테스트 케이스는 다 맞는데, 2%에서 틀렸다고 나오는데 반례를 도저히 못찾겠습니다. http://boj.kr/c07d7c93a74e4b59a390b29486c781af 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
코딩테스트 관련 질문이 있습니다.
실제 코딩테스트 상황에서 프로그래머스를 이용한다면 문제에 나온 예제 말고 보이지 않는 예제들이 통과된다면 다 맞앗다고 생각하면 될까요?다 통과되었는데 알고보니 회사측만 알수있는 테스트 케이스들이 더 있을수도있나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-C 질문
안녕하세요. 7-C 1103을 풀어봤는데 예제는 다 맞는 것 같은데 왜 틀린지 모르겠어서 질문드립니다. 감사합니다.http://boj.kr/f0e77f6d4de04f718e138d2c9337442e
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 반례 질문있습니다.
안녕하세요 큰돌님.http://boj.kr/06f3ee21acda4846ae974c80be0893d8예제 출력은 맞는데 틀렸다고 나와서 반례를 찾아보려고 했지만 못찾겠습니다
-
미해결홍정모의 따라하며 배우는 C++
Template한 A클래스의 생성자에 const T& input 부분 질문 있습니다.
강의를 보다보니 class A의 생성자 A(const T& input) : m_value(input) 을 해서 print 함수를 호출하면 쓰레기값이 나오고 있습니다.분명 코드에선 문제가 없는 것 같아 일반 클래스에서 확인해 보니일반 클래스에서는 저렇게 A(const T& input을 하여도 문제 없이 123값이 출력 되는 것을 확인했습니다. 그래서 저 부분의 문제가 뭘까 하고 템플릿 클래스 생성자에 매개변수에 '&'를 지우고 컴파일을 하니 '123'값이 정상적으로 잘 출력 되더라구요.강의에서는 문제가 없이 정상적으로 출력 되는데 제 컴퓨터에서는 저리 컴파일 결과가 나오네요.문제가 무엇일까요??#include<iostream> using namespace std; // 멤버 함수를 한번 더 템플릿화하기 Templatize template<class T> class A { private: T m_value; public: A(const T& input) :m_value(input) { } // doSomething 함수에서 또 템플릿을 함 template<typename TT> void doSomething() { cout << typeid(T).name() << " " << typeid(TT).name() << endl; } void print() { cout << "class A::m_value : " << m_value << endl; } }; class B { private: int m_value; public: B(const int& input) : m_value(input) {} void print() { cout << "class B::m_value : " << m_value << endl; } }; int main() { A<int> a_int(123); B b_int(123); a_int.print(); b_int.print(); a_int.doSomething<float>(); return 0; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
쿼드트리 질문있습니다
http://boj.kr/4b7b07dcac794a348b06eba6291b9ac2제가 작성한 코드입니다. 디버깅 해가면서 반례 같은 것들 찾아서 입력해보는데어디가 틀린지 잘 모르겠습니다 ㅜㅠ
-
해결됨C개발자를 위한 최소한의 C++
식별자 검색 순서 관련 namespace 생략 관련 오류에 관한 질문
강의 식별자 검색 순서 5분 50초 쯤에서 namespace안 Test int data를 주석하는 경우namespace Test 안의 cout << data<< endl; 에서 data가 모호성이 발생해서 에러가 나는 예시를 보여 주셨습니다. 그 이유를 data의 모호성으로 인해서 global space에 만 data가 있고 cout을 하는 Test namespace에서 data가 없으면 에러를 발생 한다고 하셨는데 std::data 와의 모호성 때문에 생기는 거로 생각 되고 namespace test안에 없고 외부에만 변수가 있더라도 std 같은 중복되지 않는 경우에는 빌드할 때 모호성때문에 에러가 발생 하지는 않지 않나요?물론 이렇게 하면 코딩할 때 햇갈리긴 할꺼 같습니다.
-
미해결홍정모의 따라하며 배우는 C++
13.4 char형 특수화 템플릿을 추가한 뒤로
13.4 char형 특수화 템플릿을 추가한 뒤로 에러가 발생해서 되고 있지 않습니다.강의 예제랑 똑같이 했는데 함수명이 같아서 에러가 발생 하더라구요. 제가 무엇을 놓쳤는지 모르겠습니다.// 함수 템플릿 특수화(Specialization) #include <iostream> using namespace std; template<typename T> T getMax(T x, T y) { return (x > y) ? x : y; } template< > char getMax(char x, char y) { cout << "Warning : comparing chars " << endl; return (x > y) ? x : y; } int main() { cout << getMax(1, 2) << endl; cout << getMax<double>(1, 2) << endl; cout << getMax('a', 'b') << endl; return 0; }
-
미해결[게임 프로그래머 도약반] DirectX11 입문
SRT 행렬중에 ppt 질문 있습니다.
이 행렬 계산 중에 v벡터를 전치해서 계산해야 저런 식이 나올 거 같은데 위의 계산과 아래의 계산의 차이는 뭔가요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
12주차 스프라이트 강의 영상이 재생이 안 됩니다
다른 영상은 정상적으로 재생이 되는데 12주차 스프라이트 만 재생이 안 되고 무한로딩이 됩니다. 재부팅이나 새로고침해도 해결이 안 되는데 확인 해주실 수 있을까요
-
해결됨MFC Windows 프로그래밍 - 기본
메시지 루프에서 메시지 처리 성능 비교: WinAPI vs MFC
안녕하세요. WinAPI에서는 메시지가 많이 쌓이면 switch case문으로 처리하기 때문에 병목 현상이 생긴다고 말씀을 하셨는데요. 그러면 MFC에서는 메시지 맵으로 처리한다면 병목 현상이 확 줄어드나요? 성능 차이가 그렇게 심하게 나는지 궁금합니다.
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
[섹션 12 Weapon Animation] DefaultLayer(Anim Layer)가 정상적으로 Load되지 않음
안녕하세요. 현재 섹션 12의 Weapon Animation 영상을 수강하고 있습니다.Haker님의 실행 결과와는 다르게, Mannequin의 AnimClass를 세팅해줘도 Pistol의 AnimLayer가 적용되지 않는 오류가 있어 질문 드리게 되었습니다. 디버깅 포인트로 확인해보니 ABP_PistolAnimLayers가 DefaultLayer에 세팅되지 못하고 있었습니다. 그래서 섹션 12강을 처음부터 다시 점검해보고 있는데, Lyra에서 AnimLayers를 가져올 때 Haker님은 Feminine 버전을 들고 왔지만 저는 기본 AnimLayers를 들고 왔습니다. 그 부분을 제외하고는 다 동일한 것으로 확인되는데, 혹시 기본 버전을 들고 오면 이런 에러가 발생하는 것일까요? https://coal-schooner-81d.notion.site/Section-10-11524bba9b048044bd6deb6fc79de295?pvs=4강의를 보며 정리하는 노션 페이지입니다. 혹시 진행 상황에서 문제가 있는 부분이 보인다면 알려주시면 감사하겠습니다...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
17822 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.설명하신 것과 비슷하게 코드를 작성을 했고 테스트 케이스도 통과를 해서 제출을 했더니 그냥 광탈을 하네요...일단 강의 보고 제출을 했지만 왜 이 코드가 틀렸는지 모르겠어서 질문드립니다..실수를 한건지 그냥 논리 자체가 틀린건지 모르겠네요.. 무식한 질문인 거 알지만 너무 모르겠어서 질문드립니다ㅜㅜ#include <bits/stdc++.h> using namespace std; int N, M, T, ret, x, d, k; int ty, tx; int dy[] = { -1, 0, 1, 0 }; int dx[] = { 0, 1, 0, -1 }; int a[54][54], visited[54][54]; void rotate(int* arr, int n) { int temp[54] = { 0 }; for (int i = 0; i < M; i++) { temp[(i + n) % M] = arr[i]; } memcpy(arr, temp, sizeof(temp)); return; } void rotate_r(int* arr, int n) { int temp[54] = { 0 }; for (int i = 0; i < M; i++) { temp[(i - n + M) % M] = arr[i]; } memcpy(arr, temp, sizeof(temp)); return; } bool bfs(int sy, int sx, int num) { visited[sy][sx] = 1; queue<pair<int, int>> q; q.push({ sy, sx }); bool flag = 0; while (q.size()) { tie(ty, tx) = q.front(); q.pop(); for (int i = 0; i < 4; i++) { int ny = ty + dy[i]; int nx = tx + dx[i]; if (ny < 0 || ny >= N ||visited[ny][nx]) continue; if (nx < 0 || nx >= M) { //인덱스를 이동해야함.. 원형이기 때문에 나가지 않음 // 0 -> 4, 4 -> 0으로 바뀜 if (nx < 0) { nx = M-1; } else if (nx >= M) { nx = 0; } } if (a[ny][nx] != num) continue; visited[ny][nx] = 1; q.push({ ny, nx }); a[ty][tx] = 0; a[ny][nx] = 0; flag = 1; } } return flag; } int main() { cin >> N >> M >> T; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cin >> a[i][j]; } } while (T--) { cin >> x >> d >> k; if (d == 0) { rotate(a[x - 1], k); while (2 * x <= N) { int temp = x * 2; rotate(a[temp - 1], k); x++; } } else { rotate_r(a[x - 1], k); while (2 * x <= N) { int temp = x * 2; rotate_r(a[temp - 1], k); x++; } } memset(visited, 0, sizeof(visited)); int sum = 0; int cnt = 0; bool flag = 0; bool check = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { sum += a[i][j]; if (a[i][j] != 0) { cnt++; } if (!visited[i][j] && a[i][j] != 0) { flag = bfs(i, j, a[i][j]); //한번이라도 지운다면 } if (flag) { check = 1; } } } if (!check) { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { double aver = (double)sum / (double)cnt; if (a[i][j] != 0 && (double)a[i][j] > aver) { a[i][j] = a[i][j] - 1; } else if (a[i][j] != 0 && (double)a[i][j] < aver) { a[i][j] = a[i][j] + 1; } } } } //a[0][0]; } //a[0][0]; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { ret += a[i][j]; } } cout << ret; }
-
미해결홍정모의 따라하며 배우는 C++
컨테이너 클래스 피드백 부탁드립니다.
#include <iostream>#include <vector>using namespace std;class IntArray {private: int m_length = 0; int* m_data = nullptr;public: //생성자 IntArray(const std::initializer_list<int> &list) :m_length(list.size()){ m_data = new int[m_length]; int i = 0; for (auto n : list) { m_data[i++] = n; } } //copy constructor IntArray(const IntArray& copy) :m_length(copy.m_length){ for (int i = 0; i < m_length; i++) { m_data[i] = copy.m_data[i]; } } IntArray operator = (const IntArray source) { if (this == &source) { return *this; } delete[] m_data; m_length = source.m_length; if (source.m_data != nullptr) { m_data = new int[m_length]; for (int i = 0; i < m_length; i++) { m_data[i] = source.m_data[i]; } } else { m_data = nullptr; } return *this; } friend ostream& operator<<(ostream& out, IntArray& arr) { for (unsigned i = 0; i < arr.m_length; i++) { out << arr.m_data[i] << " "; } out << endl; return out; } //reset void reset() { delete[] m_data; m_length = 0; m_data = nullptr; } //resize void resize(int new_length) { if (m_length == new_length) { return; } int* len = new int[new_length]; int temp = m_length > new_length ? new_length : m_length; for (int i = 0; i < temp; i++) { len[i] = m_data[i]; } delete[] m_data; m_data = len; m_length = new_length; } void insertBefore(const int& pushNum, const int& indexNum) { if (indexNum<0 || indexNum > m_length) { return; } int* temp = new int[m_length + 1]; for (int i = 0; i < indexNum; i++) { temp[i] = m_data[i]; } temp[indexNum] = pushNum; for (int i = indexNum; i < m_length; i++) { temp[i + 1] = m_data[i]; } delete[] m_data; m_data = temp; ++m_length; } void remove(const int& indexNum) { if (indexNum<0 || indexNum >= m_length) { return; } int* temp = new int[m_length - 1]; for (int i = 0; i < indexNum; i++) { temp[i] = m_data[i]; } for (int i = indexNum + 1; i < m_length; i++) { temp[i - 1] = m_data[i]; } delete[] m_data; m_data = temp; --m_length; } void push_back(const int& num) { resize(m_length + 1); m_data[m_length - 1] = num; } //소멸자 ~IntArray() { if (m_data != nullptr) { reset(); } }};int main(){ //초기화 IntArray my_arr{ 1,3,5,7,9 }; cout << my_arr << endl; // 10을 인덱스 1앞에 : 1, 10, 3, 5, 7, 9 출력까지 my_arr.insertBefore(10, 1); cout << my_arr << endl; // 인덱스 3 제거, 메모리 제거까지? 1 10 3 7 9 my_arr.remove(3); cout << my_arr << endl; // 사이즈 추가? 1 10 3 7 9 13 my_arr.push_back(13); cout << my_arr << endl; return 0;}insertBefore, remove에서 for문을 두번씩 사용하고 전체적으로 for문으로 많이 사용하는게 좀 걸리긴하는데 더 나은 방법이 있으면 얼마든지 알려주시면 감사하겠습니다!!