안녕하세요 che 배열크기와 a배열 크기가 다른 이유가 무엇인가요?
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
bool che[4000001]; int n, a[2000001], p, lo, hi, ret, sum; 이부분 왜 a배열 범위는 반으로 하신건지 궁금합니다! 또 에라토스테네스 체에서 i*i크기 까지만 보통 크기 비교 해주는데 다르게 하신 이유도 궁금합니다.
- c++
- 코딩-테스트
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
bool che[4000001]; int n, a[2000001], p, lo, hi, ret, sum; 이부분 왜 a배열 범위는 반으로 하신건지 궁금합니다! 또 에라토스테네스 체에서 i*i크기 까지만 보통 크기 비교 해주는데 다르게 하신 이유도 궁금합니다.
미해결
홍정모의 따라하며 배우는 C++
강의 19:25를 보면 '\n'은 단순 줄 바꿈이고 'endl'의 경우 줄을 바꿈과 동시에 버퍼에 있는 모든 것을 출력한다고 하셨습니다. #include <iostream> using namespace std; int main() { char c1; cin >> c1; cout << c1 << endl; return 0; } 제가 간단하게 예제를 만들었습니다. 실행 후에 c1에 입력을 단순히 하나의 문자가 아니라 12345처럼 문자열을 넣으면 c1에는 1이 담기고 2345는 버퍼에 저장된다고 생각했습니다. endl;이 버퍼에 있는 모든 것을 출력하니까 12345 모두 출력될 줄 알았는데 1만 출력되었습니다. 제가 잘못 이해한 것일까요? 감사합니다.
미해결
홍정모의 따라하며 배우는 C++
header guard로 #pragma once를 쓰는 방법과 #ifndef 쓰는 방법 두개를 설명해주셨는데, 두 개의 차이점이 있을까요? 구글링해보면 #pragma once가 처리속도가 빠르지만, 지원되지 않는 compiler가 있는 것 같고 (현재는 대부분의 compiler는 지원되지만), #ifndef 는 모든 compiler에서 지원되지만 처리속도가 #pragma once에 비해서 느리다 라는 것 같은데, 맞는 내용인지 모르겠네요.
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
http://boj.kr/ab00c6a0aa494a37a90f5ce08cc4b854 저는 좀 다르게 배열을 0으로 초기화하면 물에 잠긴 지역은 1로 표시해서 dfs로 0만 방문하도록 했습니다. 그런데 아무리 찾아봐도 틀린 부분을 모르겠습니다.
해결됨
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 큰돌님 이제 막 교안을 끝내고 1주차부터 풀어보기 시작하였는데요! 풀리지 않는 문제를 고민하는 시간 1~4시간까지라고 설명해주신 유튜브 영상도 보았는데 그럼 먼저 고민하는 시간은 알려주신 대로 하고, 그럼에도 못 푼 문제는 강의를 보면 되나요?? 그리고 또 스스로 푼 문제는 바로 해설강의로 들어가면 될까요?? 그리고 나서 해설 강의에서 보여주신 여러 방법들을 직접 타이핑 하면서 학습하면 되는 건지 궁금합니다! 🙂 그리고 이미 풀었던 문제에 대한 복습은 어떻게, 어떤 주기로 진행하면 되는지 역시도 궁금합니다! 감사합니다.
미해결
홍정모의 따라하며 배우는 C++
#include<iostream> #include<future> #include<thread> using namespace std; int main() { { std::promise<int> prom;//future를 받아주는 존재가 필요해서 promise 거침 auto fut = prom.get_future(); auto t = std::thread([](std::promise<int>&& prom) { this_thread::sleep_for(chrono::milliseconds(1000)); prom.set_value(1 + 2); }, std::move(prom));//prom소유권을 넘겨받음 cout << "before get" << endl; cout << fut.get() << endl;//prom이 setvalue되어 값을 받아오도록 fut은 계속 기다림 cout << "after get" << endl; t.join();//thread끝나는 걸 기다려줌 } } 위 코드를 전 아래처럼 이해했습니다 futre가 promise의 future를 공유 받음 쓰레드 생성되며 promise의 소유권을 받음(여전히 future와 공유 관계) fut가 prom의 setvalue까지 기다림 prom의 setvalue후 fut 출력됨 쓰레드 join 쓰레드에 std::move의 존재 이유가 궁금해서 알아보니, 쓰레드의 이동생성자였습니다. 그래서 prom의 소유권이 쓰레드로 가는건가 궁금합니다. 쓰레드 생성 후 prom.set_value(1)을 해보니 에러가 뜨기도 했습니다.
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님 , 코드가 많이 지저분한 코드지만 예제 출력이랑 반례들을 여러가지 해본 결과 잘 출력 되는것 같은데 3%에서 계속 틀렸다고 뜹니다... 어디 부분이 잘못된 건지 알 수 있을까요?? http://boj.kr/4530d78bb2464d989fe7a7e5adc42342
미해결
홍정모의 따라하며 배우는 C++
강의를 보고 따라한 아래 코드의 실행속도가 강사님에 비해 너무나 느립니다. 실행환경의 문제인가요?? #include<iostream> #include<thread> #include<atomic>//나눌 수 없다는 뜻. 쓰레드에서 연산이 한번에 이루어지도록 함 #include<mutex> #include<chrono> using namespace std; mutex mtx; int main() { //atomic<int> shared_memory(0); int shared_memory(0); auto count_func = [&]() { for (int i = 0; i < 1000; ++i) { //cout << shared_memory << endl; this_thread::sleep_for(chrono::milliseconds(1)); //doSomething; //mtx.lock(); //std::lock_guard lock(mtx);//unlock필요없음 std::scoped_lock lock(mtx); shared_memory++; //shared_memory.fetch_add(1); //mtx.unlock(); //shared memory의 값을 더할 떄의 과정 //1.shared memory값을 cpu로 가져옴 //2.1더함 //3.sharedmemory에 결과 저장 //값을 읽어들었을 때, 값이 바뀌면 더하기가 씹혀버림 => 잘못된 결과 //해결법 //1. atomic 사용 //2. fetchadd //3. mutex lock } }; thread t1 = thread(count_func); thread t2 = thread(count_func); t1.join(); t2.join(); std::cout << "After" << endl; std:: cout << shared_memory << endl; return 0; }
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요, 강사님. 저는 처음에 아홉 난쟁이의 키 분포를 저장할 수 있는 배열을 선언하고, 해당 키에 해당하는 난쟁이를 배열에 넣고, (전체 합 - 100)에 해당하는 난쟁이 두명을 찾는 방식으로 문제를 해결했습니다. 예제는 맞는데 틀렸다고 뜨는 이유를 모르겠습니다. 감사합니다. http://boj.kr/7e220e252b364c1e8dbf2d7c16a72cd0
미해결
홍정모의 따라하며 배우는 C++
안녕하세요 맥 사용자 입니다. 답변으로 아래와 같이 추가 질문 드립니다.
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 올해 초 골드 4~5도 못풀던 제가 플레를 스스로 풀었습니다. 열심히 계속 진행하겠습니다.
해결됨
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요! 감사하게도 제공해주신 강의 스크립트로 필기를 자주하는데요, 1주차 개념 #10. 구현과 문제를 푸는 방법의 기초 강의에 스크립트가 없어서요..ㅜㅜ 제가 알기론 인프런에서 ai로 스크립트를 제공하는 걸로 알고있는데 해당 강의 스크립트는 인프런에다가 요청 드려야할까요?
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
http://boj.kr/b9694422323942259c6e0971b7162168 1987번 문제에서는 시작 지점이 왼쪽 상단으로 고정되어 있는데 만약에 시작 지점이 어디든 될 수 있다면 위의 코드 41번째 줄부터 43번째 줄까지를 ffor (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { vis[i][j] = 1; alpha[board[i][j] - 'A'] = 1; solve(i, j, 1); vis[i][j] = 0; alpha[board[i][j] - 'A'] = 0; } } 위의 코드로 바꾸면 알맞은 답이 나오는지 알고 싶습니다.
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
만약 소수점 #자리까지 표현해야 하는 문제는 그냥 printf 쓰는게 낫나요? 아니면 cin함수를 유지하되 precision 같은 함수를 쓰는게 낫나요?
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 큰돌님! 정확히는 6-O에 국한된 질문은 아니지만 6-O 2565 전기줄 문제 풀다가 어떻게 풀지 감이 잘 안잡혀서 영상보고 내가 직관력이 부족한건가 싶어서 여쭙습니다. 이번 6주차, 이분 탐색과 LIS를 하면서 이분 탐색은 제가 연습량이 부족한거 같아 solved.ac 실버 난이도 무지성 박치기 하니깐 이제 감이 좀 잡혔습니다. 다만, LIS 관련 문제는 "최장 증가 수열" 이란 단어가 없으면 LIS를 이용할 생각이 전혀 안나요. 6-O 강의를 보면서 정말 깜짝 놀랐습니다. 어떻게 LIS를 이용해서 푸실 생각을 하신건지... 실제로 문제중에 "최장 증가 수열"이란 단어가 없음에도 LIS를 이용해 풀이가 가능한 문제들이 많은가요?
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
visited[nextY][nextX] = visited[nowY][nowX] + 1; 로 방문 겸 가중치를 처리해주는데 가중치가 업데이트가 되지 않습니다. (모든 visited 배열이 1로 표시됨) 혹시 이유가 있을까요 ㅜㅜ 붙잡고 있어도 어디가 문제인지 잘 모르겠네요. http://boj.kr/fc00f1fba57c469881ce2b1aff27fc66 +) 탐색은 잘 진행됩니다. visited 배열 출력 첨부하니 참고해주시면 감사하겠습니다.
해결됨
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 큰돌님! 교안 p79에 memset() 개념에서 char형의 하나의 문자(a, b, c, 등..)으로 초기화도 가능하다고 하셨는데, 어떻게 초기화하면 될까요? #include <bits/stdc++.h> using namespace std; const int max_n = 1004; int a[max_n]; int a2[max_n][max_n]; int main() { memset(a, 'a', sizeof(a)); memset(a2, 0, sizeof(a2)); for (int i = 0; i < 10; i++) cout << a[i] << ' '; cout << '\n'; return 0; } 위의 예제 코드를 실행하면 1633771873 1633771873 1633771873 1633771873 1633771873 1633771873 1633771873 1633771873 1633771873 1633771873 가 나옵니다ㅠㅠ 그리고 교안 80p에 예제코드로 올려주신 아래 코드가 잘못된 것 같습니다 🙂 수정해주시면 감사하겠습니다. #include <bits/stdc++.h> using namespace std; int main() { int cnt = 0; int a[5] = { 0, }; while (++cnt != 10) { for (int i = 0; i < 5; i++) a[i] = i; a[5] = { 0, }; for (int i : a) cout << i << ' '; cnt++; } return 0; }
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 큰돌님! 회전에 대한 아이디어를 떠올리지 못해서 4방향에 대해서 dfs 돌리면서 구현해 보았는데 TC는 다 통과하는데 바로 틀렸다고 나와서 질문 드립니다 ㅠㅠ 어느 부분을 신경쓰지 못한 걸까요? 일단 저는 3가지 pair<int,int>형 배열을 사용하고 3가지 함수를 구현 했습니다. 우선 3가지 pair<int,int> 배열입니다. pair<int, int> startPos[4] = { {0,0},{20,0},{0,0},{0,20} }; // 위,아래,왼,오 부터 시작할때의 시작 위치 pair<int, int> NextRow[4] = { {0,1},{0,1},{1,0},{1,0} }; // 각 방향에 대해서 다음 줄로 이동하기 위한 pos 양. ex) 위일 경우 한줄하고 다음 열로 가서 해야함 pair<int, int> NextPos[4] = { {1,0}, {-1,0},{0,1},{-1,0} }; // 한 줄에 대해서 다음 Pos로 가기 위한 이동 양. ex) 위일 경우 0번행부터(열고정) 끝 행까지 검사해야 한다. 3가지 함수 프로토 타입입니다. void dfs(int cnt, int curIdx); void moving(int dirIdx, int PivotIdx, int InputIdx); void updataMaxRet(int findIdx); dfs : 최대 5번까지의 이동을 하기 위함. dfs에 들어가면 4방향에 대해서 이동한다. dfs에서 각 방향에 대해서 호출되는 함수로. 새로운 배열에 이동된 값들을 넣어준다. 이동된 새로운 배열에 대해서 최대값 업데이트 코드 링크는 여기있습니다. http://boj.kr/d56849369aa34f00b3ffea60647a4816
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의에서는 atoi(s.c_str()) 를 쓰는데 혹시 stoi 함수랑 개념이 같나요? 두 함수 모두 string 에서 int 형으로 변환하는데 어떤 차이가 있나요? 저는 for(int i=0;i<m;i++){ cin >> s; if(atoi(s.c_str()) == 0) cout<<A[s] << "\n"; else cout << B[atoi(s.c_str())] << "\n"; } 이 부분을 for(int i=0;i<m;i++){ cin >> s; if(isdigit(s[0])){ cout << B[stoi(s)] << "\n"; } else{ cout << A[s] << "\n"; } } 이렇게 해봤네요
해결됨
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
https://www.acmicpc.net/source/74215560 안녕하세요 ㅠ 시간 초과가 왜 나는 건지 잘 모르겠습니다... 제가 계산한 것에 따르면 1. 모든 경우의수 4^8 2. 기준 방향 설정 x4 3. 기준 방향을 중심으로 4방향 탐색 후 감시 방향 기록 (최대 3방향, 가로,세로 8칸) x (64+64(복사)) => 34백만 정도 맞왜틀일까요..ㅠㅠ