묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-A와 C는 거의 같은문제인가요?
네
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
큰돌님의 알고리즘 선생님은 어느 분 이셨나요?
1700문제 푸시면서 본인 스스로 깨우치신건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-I 문제 백준에 1620번 검색했는데 나오지가 않네요...
1-I 문제 백준에 1620번 검색했는데 나오지가 않네요...혹시 몇 번 문제인지 알 수 있을까요...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과 문제
안녕하세요, 시간초과가 나서 질문드립니다.http://boj.kr/8e5586c64a774c39bac19c6aa002074f 제 로직은 다음과 같습니다.2차원 벡터로 사다리를 표현합니다. 다만 각 행열의 값은 0일 경우 이어진 사다리가 없고, 값을 가질 경우 index+1의 value를 가집니다. 즉 (0,0)-(0,1) 사이에 사다리가 있을 경우 (0,0)=2, (0,1)=1을 갖습니다.뽑을 수 있는 사다리의 조합을 구합니다. 이는 벡터의 현재 값과 다음 값이 모두 0이면 후보군 벡터에 추가합니다. (코드에선 parti입니다.)parti 벡터를 0부터 3까지 조합을 구합니다. 후보군 중 0개, 1개, 2개, 3개 를 뽑는 모든 조합을 구합니다.조합을 만들 때 연속된 사다리는 피했습니다.조합이 완성될 경우 check 함수를 호출하여 사다리 타기를 진행합니다.이런 플로우를 갖고있고, 이렇게 풀 경우 백트래킹도 필요가 없기에 오히려 적은 연산을 할 거라고 생각했습니다. (아니면 비슷하거나) 하지만 시간초과가 발생하기에 질문드립니다.디버깅을 해보니 조합은 제대로 뽑히고 있습니다. 필요없는 연산은 딱히 없어보이는데 무슨 문제가 있을까요?+) 백트래킹이란 말을 그냥 완전탐색을 진행하되 중간에 답이 나오면 끝내겠다. 혹은 기존의 답보다 깊게 탐색이 진행되는 것을 막겠다. 라는 것으로 이해했는데 이게 맞는건가요? 그렇다면 보통은 다들 그런 식으로 구현할텐데 굳이 백트래킹이란 단어를 쓰는 이유는 뭘까요..?감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-A 이런 아이디어 못내겠는데
그냥 많이 풀어서 많은 경험해서 코테 보는 수 밖에 없나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-B 강의 코드와 해설 코드 다름
안녕하세요? 강사님 열정 가득하신 강의에서 많이 배우고 있습니다.. 제목 그대로 6-B강의에 입력된 코드랑 해설에 있는 코드가 조오오금 상이해서 확인한번 해봐주시면 좋을 것 같습니다. 매번 너무 좋은 강의 감사드립니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
선긋기 왜 이렇게 하면 틀릴까요?
ㅠㅠhttp://boj.kr/07ad69fe4d27497792ab3eddd35261eb
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
칠무해 이렇게 하면 왜 틀릴까요?
ㅠㅠhttp://boj.kr/d927a15d72e141c2968712791d96deb9
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
에라토스테네스의 체를 활용한 isPrime 함수
선생님 소수와 관련된 문제라 에라토스테네스의 체 알고리즘을 이용하여 배열에 미리 소수에 대한 여부를 파악하여 저장해두었습니다. isPrime 함수는 단순히 해당 배열의 값이 true인지 false인지 리턴을 하는것이라, 함수 자체의 의미가 없어지는거 같은 느낌이 들어서요. 실제 코딩테스트에도 이와같이 작성해도 문제가 없을까요? 아니면 함수의 의미에 맞게 함수 내부적으로 연산을 수행해야 할까요? #include <iostream> bool isPrime(int x); int reverse(int x); // 에라토스테네스의 체 알고리즘 static bool primes[100001]; int main() { int N, numInput; scanf_s("%d", &N); // 모두 true로 초기화 for (int i = 0; i < 100001; ++i) primes[i] = 1; // 0과 1은 소수가 아님 primes[0] = primes[1] = false; // 에라토스테네스의 체 알고리즘을 통해 모든 소수 판별 for (int i = 2; i <= std::sqrt(100001); ++i) { if (!primes[i]) continue; primes[i] = true; for (int j = i * 2; j < 100001; j += i) primes[j] = false; } // 나머지 계산 for (int i = 0; i < N; ++i) { scanf_s("%d", &numInput); int reverseNum = reverse(numInput); if (isPrime(reverseNum)) printf("%d ", reverseNum); } } bool isPrime(int x) { return primes[x]; } int reverse(int x) { int num = 0; while (x > 0) { num = num * 10 + x % 10; x /= 10; } return num; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안과 강의 매치
교안을 처음부터 보면 기본 사용법이랑 입출력등이랑이 나오는데 강의는 시작부터 재귀함수부분을 들어가고 있는데 알고리즘교안이랑 강의랑 어떻게 사용하면될까요?? 재귀함수를 파트도 교안에서 보이지않는데 일단은 교안을 보면서 따라 사용해보고 그다음에 재귀함수를 듣고 포인터를 강의랑 교안을 같이사용하면서 듣는게 맞는건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
bfs로도 한번 풀어봤는데 메모리 초과가 뜹니다! 혹시 이유를 알 수 있을까요?
http://boj.kr/de8945ab75c34aa8a4034d0ebe22fc4f문제를 bfs로도 한번 풀어 보았습니다! 예제는 정확하게 정답이 나왔습니다.전역변수로 선생님과 같은 배열들의 크기를 잡았는데 제출시 메모리초과가 뜨는 이유는 bfs안에 queue를 만들어서 그런것일까요?? 추가로 시간복잡도는 주어진 문제의 변수에 범위를 보고 내가 쓸 로직과 비교하여 이 로직이 될지 안될지 판단이 어느정도 가능해 졌는데, 문제에서 제공한 제한된 공간복잡도를 만족하는지에 대한 판단은 어떻게 해야 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-L 알파벳 질문 있습니다!
https://www.acmicpc.net/source/share/36b096b47b1e43518dee34891f9e1897안녕하세요 큰돌님, 혹시 제 코드도 괜찮은 코드인지 여쭤드립니다, 다름이 아니라, 여기까지 오면서 그동안 visited를 쓸때 2차원 배열로 했었는데, 이번 영상에서는 1차원 배열을 써서, 저는 배운데로 일단 저만의 방식으로 코드를 짜긴했는데, 혹시 효율성이나 1차원 배열로 한 이유를 설명해주시면 감사합니다 ㅎㅎ
-
해결됨홍정모의 따라하며 배우는 C++
섹션 2.2 정수 형 부분에서 질문있습니다.
섹션 2.2 정수 형에서 질문이 있습니다.맨 앞에 비트는 부호 비트라서 -1을 해주는 것까지는 이해하겠는데 0을 표현하기 때문에 하나를 빼줘야 하는 게 이해가 안 가요.영상에서 8분 32초 부분입니다.
-
미해결홍정모의 따라하며 배우는 C++
헤더가드를 제일 메인 파일에 넣으면 안되나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 제일 메인이 되는 파일에 헤더가드를 넣으면굳이 다른 헤더파일들에 안 넣어도 괜찮다고 생각이 드는데 그렇지 않은 이유가 무엇인가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
mod11 개념문제 질문에 이어 추가 질문입니다.
선생님께서 추가적으로 답변해주신 것을 늦게 확인하였습니다. 아마 선생님께서도 제가 추가로 답변한 것을 확인하시지 못하신 것 같아서 추가로 커뮤니티에 질문드립니다.선생님이 추가로 답변해주신 마지막 답변에서 "idx 0인 경우를 포함하지 않는 경우는 체크하지 않게 되기 때문"이라는 부분을 읽고 깨우친 것 같습니다. 완전탐색과 백트래킹을 사용하는 경우의 차이를 알게 된 것 같습니다. 제가 이해하기로는완전탐색 -> 해당 상황마다 이 경우를 포함하는지 안하는지를 전부 따져가며 경우를 모두 구함백트래킹 -> 한 지점이 고정이고 그 지점부터 목적지까지 가는 모든 경로 or 전체 중 몇가지를 고르는 문제와 같이 "무조건 첫번째(경로 문제에서는 첫 지점 고정, 몇가지를 고르는 경우 문제에서는 무조건 처음 한가지를 고르고 다음 순서로 넘어가는 것)를 포함"하는 상황이런 상황별로 완전탐색과 백트래킹을 푸는 경우가 나뉘는 걸로 이해되었는데 맞을까요?답변 주신 후에 이 글은 이전 질문과 이어지는 것이기 때문에 삭제하겠습니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과 이유가 궁금합니다.
실패http://boj.kr/07dc01c4e7c2492580934f84b3f2c8af성공http://boj.kr/6d68ec80a15341a09987a0a32f32fc8fdeque 하나만 써서 풀었습니다.BFS로 탐색하면서 빈공간이면 push_front, 친구를 만나서 멈춰야하면 push_back을 했고 각각 visit값을 동결, +1 해줬습니다. 그리고 목표지점에 도착했을 때 끝냈습니다.실패한 코드와 성공한 코드의 차이점은 하나 입니다. 시작지점의 visit값을 0으로 뒀는가 (미방문은 모두 0) 아니면 1로 두고 시작했는가 (첫 시작점의 visit을 1로 둔 것)둘 다 결과는 잘 나옵니다 (예제가 적어서 테스트할 게 적지만 bfs로 탐색하는거 따라가보면 제대로 작동합니다.) 하지만 시작지점의 visit을 0으로 뒀을 때는 귀신같이 시간초과가 나게 됩니다..;개인적으론 이런 알 수 없는(?) 시간초과나 메모리초과 때문에 백준이 너무너무 싫은데요 ㅠ 혹시 이것도 제가 생각못한 다른 이유가 있어서 시간초과가 뜬건지.. 궁금합니다.cin,cout 입출력 동기화는 쓰지 않았습니다만 인간적으로 그런걸로 정답/오답이 갈리는건 문제가 문제있다고 생각됩니다 (화가 나서 그런거 맞습니다 흑흑)
-
해결됨홍정모의 따라하며 배우는 C++
반복문 안에 선언
안녕하세요. 반복문 안에 선언을 할 경우 매번 메모리가 회수되고 할당되나요?메모리의 할당과 회수는 운영체제가 관여한다고 알고 있는데, 위와 같은 경우 성능에 좋지 못한 영향을 줄 것 같습니다.만약 제가 컴파일러라면 반복문 안에 선언할 경우 이를 파악해 메모리를 회수하지 않고 반복문을 빠져나갈 때 회수할 것 같습니다. 실제로 컴파일러도 이렇게 동작하는지, 만약 아니라면 반복문 외부에 캐싱하는 것이 유의미한 일인지도 궁금합니다.
-
해결됨홍정모의 따라하며 배우는 C++
블록 내에서 선언한 vector를 이차원 vector에 넣었을 때
블록 안에서 선언한 vector은 블록 밖으로 나가면 회수되는 것으로 알고 있습니다.그런데 만약 이 vector를 블록 밖에서 선언한 이차원 vector에 넣었을 때 어떻게 되나요?실행은 잘 되는데 이게 컴파일러가 길이를 유지시켜주는 건지, 아니면 이차원 vector에 복사되는 것인지 궁금합니다. vector<vector<int>> wheelList(NUMBER ); //caching { vector<int> wheel(SIZE); string temp; for(int i = 0; i < 4; i++){ cin >> temp; for(int j = 0; j < NUMBER; j++){ wheel[j] = temp[8 - j - 1] - '0'; } wheelList[i] = wheel; } }
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
"board에 쓰는 동안 버퍼 오버런이 발생했습니다"
안녕하세요 달팽이 문제를 푸는데 답은 잘 나옵니다 그런데 SetBoard함수의 board[y][x] = i이 부분에서 "board에 쓰는 동안 버퍼 오버런이 발생했습니다"라는 경고가 나옵니다 이러한 경고가 왜 뜨는지와 이 경고를 해결하려면 어떻게 코드를 수정해야 하는지 알 수 있을까요?코드링크:http://boj.kr/d69d82f1e84c49da942ec7948ab48529
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S dp 배열을 좀 더 이용해보려고 코드를 바꿔봤는데 틀렸습니다가 나오네요
아래는 맞는 코드입니다.http://boj.kr/1b13bda362154df9b5be8a26cad57c96이 코드를 개선해보려고 아래와 같이 코드를 짜보니 틀렸습니다가 나오네요.http://boj.kr/a6cbb7ca3b214df386ebb96214bc2785dp를 아직 잘 모르는데 선생님의 풀이를 보고 조금 더 횟수를 줄일 수 있지 않을까 해서 한번 바꿔봤는데요. 맞왜틀에 빠졌습니다... 도저히 혼자서는 이유를 찾을 수 없어서 질문드립니다!