묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 질문있습니다 :)
안녕하세요 선생님 🙂 이 문제를 이해하고 직접 풀기까지 많은 시간이 소요된 것 같습니다. 그래도 덕분에 업그레이드가 많이 된 것 같네요 ㅎㅎ 다름이 아니라, go함수 안에 있는이중 for문의 for(int j = 1; j < n; j++)에서 범위가 왜 j < n이 정답이 되는지 잘 모르겠습니다. j <= n을 하여 세로선(가로인덱스)의 마지막 부분도 체크를 해줘야 할텐데 체크를 안해도 정답으로 인정되는게 이해가 안됩니다;; 알려주시면 감사하겠습니다 :)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-i 포켓문 문제 시간초과
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.이와 같이 코드를 작성하였는데 시간 초과가 나는데 왜 그런 것인가요?일부러 시간복잡도가 m*n이 되지 않게 하려고 맵 2개를 만들어서, o(n)이 최고 시간복잡도가 되게끔 설계하였습니다.#include <bits/stdc++.h> using namespace std; int n; // 포켓몬의 수 int m; // 문제 수 map<int, string> poketmonsByNumber; map<string,int> poketmonsByName; vector<string>searchId; string name; string question; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cin>> n >> m; for(int i=0; i<n; i++){ cin>>name; poketmonsByNumber[i+1]=name; poketmonsByName[name]=i+1; } for(int i=0; i<m; i++){ cin>>question; if (isdigit(question[0])) { int id = stoi(question); searchId.push_back(poketmonsByNumber[id]); } else{ string id=to_string(poketmonsByName[question]); searchId.push_back(id); } }; for(auto id : searchId) { cout<<id<<endl; } return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 선생님. 반례를 찾지 못해 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 선생님.입력받은 문자열을 map을 사용해 알파벳 당 개수로 저장했습니다.홀수가 2개 이상이면 sorry를 출력하도록 했습니다.홀수가 1개인 경우, 홀수 알파벳의 개수 -1 을 하고 , 홀수 알파벳을 저장했습니다.그 후 다시 루프를 돌면서각 알파벳 개수의 절반만큼 오름차순으로 문자열을 만들고, 미리 저장해둔 홀수 알파벳 1개를 더한 뒤 , 오름차순 문자열을 뒤집어서 더하는 방식으로 코드를 구현했습니다.이것저것 다 넣어서 해봤지만 반례를 찾지 못하고있습니다 ㅜ http://boj.kr/86a69d1d5ce647b09c5a121b0c9e5ea9
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
맞왜틀 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님 아래와 같이 코드를 작성했는데요, 제가 짜낼 수 있는 예외 케이스들을 넣어서 돌려봐도 잘 돌아가는데 왜 틀렸다고 나오는지 모르겠네요 ㅜ https://www.acmicpc.net/source/82101102
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-B질문 있습니다
http://boj.kr/7c3f26d3241248269e0dafaccddfdc0e안녕하세요 큰돌 선생님. 이번 문제를 탑다운 방식으로 풀어 봤는데 어느 부분이 틀린지 모르겠습니다... 그리고 dp배열을 0이 아닌 -1로 초기화 하는 이유가 0이 답의 범위에 있다라고 다른 질문에서 얘기해 주셨었는데 0이 답의 범위라는게 문제의 답이 0이 나올 수 있다는 건지 dp배열 안의 값이 0이 될 수 있다는 의미인지 잘 모르겠습니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-k 교수가 된 현우 런타임 에러
안녕하세요. 강의를 보기 전에 문제를 먼저 풀어보았습니다.5!를 생각해보면 5*4*3*2*1 인데, 5가 나오기 위해선 반드시 2와 4가 나와야하고, 따라서 5의 개수가 무조건 적다고 생각했습니다. 그래서 10억 이하의 모든 5의승수를 저장해놓는 배열을 만들어두고, 1~n 사이의 수 중 5^k로 나누어 떨어지는 수가 발견되면 cnt에 k를 더하도록 만들었는데, runtime error가 발생했습니다. 에러 코드는 divide by zero 가 나오는데, 나눗셈을 사용하지 않는데 이런 에러가 왜 발생하는걸까요? http://boj.kr/f55433f25a704564a5d253bad99cd7ac
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
백준9996번 질문드립니다.
#include <bits/stdc++.h> using namespace std; int num; string pattern; string fileName; int asteridIndex=0; int isValid; vector<char> patternFront; vector<char> patternBack; vector<string> output; int checkValid(string fileName){ string fileNameReverse; fileNameReverse=fileName; reverse(fileNameReverse.begin(),fileNameReverse.end()); for(size_t i = 0; i<patternFront.size(); i++){ if(fileName[i]==patternFront[i])continue; else{return 0;} } for(size_t i = 0; i<patternBack.size(); i++){ if(fileNameReverse[i]==patternBack[i])continue; else{return 0;} } return 1; } int main() { cin>>num; cin>>pattern; for(size_t i=0; i<pattern.size(); i++){ if(pattern[i]=='*'){asteridIndex=i; continue; // 이번껀 패턴으로 저장 안하고, 다음 문자로 넘어가기 위해 } if(asteridIndex==0){ patternFront.push_back(pattern[i]); }else if(asteridIndex!=0){ patternBack.insert(patternBack.begin(), pattern[i]); } } for(int i = 0; i<num; i++){ cin>>fileName; isValid=checkValid(fileName); if(isValid==0){output.push_back("NE");} else if(isValid==1){output.push_back("DA");} } for(auto o:output){cout<<o<<"\n";} return 0; } 입력 -> 출력은 알맞게 되는데 백준에선 계속 틀렸습니다가 나옵니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-V 질문있습니다
http://boj.kr/7eea708ea65645e784b2eaab4ec27b88 다음과 같은 방법으로 시간을 0에서 부터 시작하여 K시간까지 하는 방법으로 코드를 작성하였는데 왜 틀린 답이라고 나올까요?? 만약 저와 같은 방법으로 하려면 어떤 식으로 코드를 수정해야 될까요?아 그리고 -1e6 == -1000000이라고 생각하면 될까요?
-
해결됨CUDA 프로그래밍 (3) - C/C++/GPU 병렬 컴퓨팅 - 메모리 구조
[Matrix Addition Problem] 1D를 사용하지 않는 이유가 뭔가요?
강의에서 10,000 x 10,000 행렬의 덧셈을 해결하고자 했고, 이를 2D thread block(32 x 32)으로 풀어내셨습니다. 1D thread block을 사용하지 않는 것에 대한 의문이 들었습니다. [질문]1D thread block은 실무에서 잘 쓰이지 않나요? 의문을 가진 이유는 다음과 같습니다. 우선 2D로 설계할 경우, thread block의 dimension을 어떻게 설정하는지에 따라 낭비되는 thread가 달라집니다.[1 x 1,024] : GridDim(10,000 x 10 x 1), 2,400,000개 낭비[2 x 512] : GridDim(5,000 x 20 x 1), 2,400,000개 낭비[4 x 256] : GridDim(2,500 x 40 x 1), 2,400,000개 낭비[8 x 128] : GridDim(1,250 x 79 x 1), 1,120,000개 낭비[16 x 64] : GridDim(625 x 157 x 1), 480,000개 낭비[32 x 32] : GridDim(313 x 313 x 1), 320,256개 낭비 Thread 낭비가 가장 적은 block dimension은 강의에서 소개해주신 [32 x 32] 입니다. 저는 여기서 1D로 설계했을 때, 낭비되는 therad의 개수가 궁금해졌습니다.[1,024] : GridDim(97,657 x 1 x 1), 768개 낭비 1D로 thread block을 설계했을때, therad 낭비는 768개로 2D로 설계하는 경우와 비교했을때 적지않은 차이라고 생각합니다. 물론 실제로 측정해본 결과(RTX 3090) 약 40 usec 차이로 1D thread block인 경우가 더 빠르긴 했지만 생각보다 큰 차이는 아니었습니다.양질의 강의를 제공해주셔서 감사합니다!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 질문 드립니다 memset()
큰돌님 안녕하세요. 오늘은 교안에 헷갈리는 부분을 들고 왔습니다. memset() 함수중에, memset은 -1, 0, 혹은 char?까지 된다는 말씀일까요 안된다는 말씀일까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-F질문있습니다
http://boj.kr/38e288735ce042b08b79f4830cc93119 결국 괄호 묶기는 3숫자 중에 연산 앞으로 2개 묶나 뒤로 2개묶나를 비교해서 더 큰연산을 가져오는 방식이라 생각해서 이렇게 진행했는데 틀렷다고 나옵니다. 어떤 부분에서 논리가 틀렸는지 궁금합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 질문 있습니다
http://boj.kr/6fddcaf0cc7c429f979e53823889d3bd 저는 이렇게 ret 을 0으로 두고 풀었는데요. 만약 ret을 1로 두고 푼다면 비에 전체가 잠기는 경우에는 안전영역이 0일텐데 이경우에 어긋나서 틀려야 되는거 아닌가요?예를 들면 2*2로50 5050 50의 높이로 구성된 지역에 비가 100씩 와버리게 되면 안전영역은 0개가 아닌가요? 그래서 ret은 1이 되면 안된다고 생각하는데 왜 맞게끔 채점이 되는건지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 수정 제안 드립니다.
큰돌님 안녕하세요?해당 강의의 아래 질문과 같이 combi() 함수 구현 중 값에 의한 호출 / 참조에 의한 호출을 잘못해서 시간 초과가 발생했습니다. // 해당 질문 링크https://www.inflearn.com/course/lecture?courseSlug=10%EC%A3%BC%EC%99%84%EC%84%B1-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%81%B0%EB%8F%8C&unitId=228311&tab=community&q=1286398&category=questionDetail 저도 combi 함수의 파라미터인 vector<int>를 값에 의한 호출로 써서 시간 초과가 났는데요, 값에 의한 호출을 사용한 이유 중 하나는 교안에 값에 의한 호출의 combi 예제가 있고 참조에 의한 호출 combi 두 가지 예제가 있어서 값에 의한 호출 예제를 사용했습니다. vector<int>의 경우 무조건(?) 참조에 의한 호출이 더 좋다면, (제가 이해한게 맞다면?)(최신 교안 150p) 교안의 아래 예시도 참조에 의한 호출로 바꾸면 어떨까요?(최신 교안 기준 165p)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
DFS와 BFS에서 이해가 되지 않는 부분이 있습니다
안녕하세요 선생님 🙂개념 관련 질문이어서 이렇게 따로 질문 드립니다. 양해 부탁 드립니다. 근래 DFS와 BFS를 푸는 도중에 이해가 되지 않는 부분이 있어서 질문 드립니다. 가중치가 같을 경우, 가중치를 구하는 문제는 DFS가 아닌 BFS를 써야한다고 배워서 그런가보구나 하고 외우고 문제를 풀어나갔습니다. 그런데 문득, DFS로도 가중치를 구할 수 있지 않나 싶더라구요. 선생님께서 알려주신 DFS방식과는 별개로, BFS의 queue를 stack으로만 바꿔도 DFS방식이 되기 때문에 변형하여 가중치를 계산해봤습니다. 기존에 풀었던 2-A 백준 2178번 미로탐색을 stack으로 변형하여 가중치를 계산해봤더니 출력 값이 오답으로 나오더라구요. 근데 이게 이해가 되지 않습니다. BFS의 일반적인 풀이는 queue와 4방향 탐색을 이용하여 좌표 값 (ny, nx)를 queue에 push하며 visited배열의 값을 ++하는 방식이었는데요, 좌표 값을 앞에서부터 가져온다는 특징이 있었습니다. 반대로 queue를 stack으로 변형한다면, stack과 4방향 탐색을 이용하여 좌표 값 (ny, nx)를 queue에 push하며 visited배열의 값을 ++하는 방식이 될텐데요, 좌표 값을 뒤에서부터 가져온다는 차이점이 있습니다. 하지만 이러한 차이점이 있다고 하더라도, 좌표 값의 앞부터 사용하는 것이 뒤에서부터 사용하는걸로 바뀔 뿐인데 왜 오답처리가 되는지 이해가 되지 않아서 질문드립니다. 장문의 질문을 읽어주셔서 감사합니다 :)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-L 질문있습니다 :)
안녕하세요 선생님 🙂 DFS를 이용한 완전탐색 문제인 것을 확인하였고, 덕분에 문제없이 문제를 풀 수 있었습니다. 감사합니다 :) 문제를 한 가지 방법이 아닌 여러 방법으로 접근해보고 있는데요, BFS를 이용한 완전탐색으로 변형을 해보려고 하는데 쉽지가 않네요;; ㅎㅎ 기존의 DFS와 BFS는 가중치만 없다면 자유롭게 변형이 가능해서 당연히 가능할거라고 생각했는데요, 이번 문제는 완전탐색까지 고려하자니 기존 방식대로는 안되는 것 같습니다. 조언 주시면 정말 감사하겠습니다!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 질문 드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/2fabda49b9824800982906f0ee7e106a어디가 틀린지 모르겠습니다...
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
유니코드 특수문자 출력 관련
안녕하세요유니코드 특수문자를 출력시킬 때 일부 특수문자(Ballot Box with X)가 ?로 출력이 되고 있습니다레지스트리 편집기에서 chcp를 새로 설정해주기도 하고인코딩을 새롭게 해서(유니코드 65001) 저장도 하고문자 그림 대신 유니코드 번호를 적어도 봤지만('\u2612')여전히 해결되지 않고 있습니다다른 해결방법이 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8주차 개념강의 영화수집 질문드립니다
안녕하세요큰돌님 8주차 개념강의 영화수집 문제에 궁금한 점이 있어 질문드립니다!큰돌님의 코드와 동일한 로직으로 코드를 작성했는데 자꾸만 오답으로 떠서 원인을 찾던중에 아래와 같은 원인을 발견했습니다.제 코드int t,n,m,temp; int tree[200004]; map<int,int> mp;큰돌님 코드int t, n, m, tree[200004], temp; map<int, int> mp; 단지 전역변수(tree 배열) 선언 순서만 다른데, 오답으로 채점되었습니다. (큰돌님 코드에서 전역변수 순서만 바꿔도 오답으로 채점됩니다.)전역변수 선언 순서는 로직에 영향을 받지 않는다고 알고있었는데, 영향이 가는걸까요?제가 평소에도 전역변수를 선언할때, 배열은 배열끼리 분리해서 선언하는 습관이 있어서 이렇게 선언하였는데 이유가 궁금합니다!+ 추가적으로 왜 update_idx가 100001 이어야하는지 잘 이해가 가지 않습니다..😥update_idx가 100001이면 idx 100002부터 저장되는데,i가 1부터 10만까지이니까 그 다음번 인덱스인 100001부터 저장하면 안되는건가요?코드 : https://www.acmicpc.net/source/81853752문제: https://www.acmicpc.net/problem/3653
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
치킨집이 좌표의 갯수가 입력한 m보다 적을때는 고려하지 않아도 되나요?
5 50 0 1 0 0 0 0 2 0 1 0 1 2 0 0 0 0 1 0 0 0 0 0 0 2이런 입력값을 넣었더니 값이 987654321이 나왔습니다.이런 경우는 따로 처리 해주지 않아도 되나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-N 질문 있습니다.
4분 30초쯤에 log64부분이 이해가 안되는 사람은 시간 복잡도 관련되어서 보고 오라고 하셨는데 시간복잡도에서 재귀함수 관련돼서는 몇번 중복되느냐에 따라 ()^n의 복잡도를 가진다는 이야기만 있는데 혹시 다른 부분에 언급 되어 있을까요? 제가 못찾는 걸까요ㅠㅠ 어디 부분을 봐야되는 것일까요?왜 log2 64인지 이해가 잘 되지 않습니다ㅠ