inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

동생이 도착한 시간 - 수빈이가 도착한 시간 이 짝수일 때

해결됨

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

http://boj.kr/c287b933ed0442d4ba02329f7601b61b 선생님, 안녕하세요. 동생의 위치를 미리 구해놓고, 수빈이가 그 위치에 갈 수 있는지를 구하는 식으로 했습니다. bfs를 이용했고, bfs의 로직 안에 현재 수빈이가 동생보다 빨리 방문했을 때를 처리하는 로직을 넣었는데요. 강의에서 설명해주셨던 것처럼, +1 -1을 하면 제자리로 돌아올 수 있고, 이때 2초가 걸리기 때문에 시간차가 반드시 짝수여야만 수빈이가 동생을 찾을 수 있기 때문에, 동생이 오는 시간 - 현재 수빈이가 오는 데 걸린 시간 이 짝수 일때, 동생이 오는 시간을 최소값으로 넣는 로직을 넣었습니다. 그런데 답이 틀렸다고 나와서, 1)왜그런건지? 2)visited배열을 2차원으로 한거랑 무슨 차이가 있는지 궁금합니다.

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

2-D 질문있습니다!

미해결

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

문제에서 주어지는 조건은 맨 왼쪽 아래가 (0,0) 지점이라고 했는데 2차원 배열로 생각해보면 맨 왼쪽 위가 (0,0) 입니다. 강사님의 코드를 출력해보면 이런식으로 나오는데 문제에 있는 그림이랑 비교해보면 위치가 반대입니다. 이렇게 나오는 이유가 위에서 언급한 (0,0)의 기준이 맨 밑에서 왼쪽인지, 맨 위에서 왼쪽인지의 차이인듯 한데 상관없는건가요..?

  • c++
  • 코딩-테스트
S Y 댓글 2 좋아요 0 조회수 223

질문입니다

해결됨

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 다음은 제가 처음에 푼 코드입니다. #include <bits/stdc++.h> using namespace std; int N; string S,temp1,temp2,Q; int main(){ cin>>N; cin>>S; temp1 = S.begin(); temp2 = S.end(); for(int i = 0 ; i<N ; i++){ cin >> Q; if(Q.begin() == temp1 && Q.end() == temp2){ cout<<"DA\n"; } else cout<<"NE\n"; } } 저는 앞뒤글자들을 temp1,temp2에 저장해두고 새로 입력 받은 string또한 앞과 뒤를 비교하는 코드를 작성했습니다. 선생님 강의를 듣고 처음 한글자가 아닌 *을 기준으로 문제를 풀어야한다는 것을 알게됬습니다. 그런데 위 코드에서 문법적인 오류가 있는 것 같은데 문법적으로만 왜 오류인지 궁금합니다. 감사합니다.

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

질문있습니다!

미해결

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

안녕하세요! 강의와는 다른 방식의 로직으로 풀어보았습니다. v 라는 방문처리 할 수있는 배열을 만들었습니다. 재료 배열을 순회하면서 M에서 해당 값을 뺏을 때 배열에 그 값이 있다면 입력값의 위치와 M-해당값의 위치를 방문 처리 해주면서 결과값을 count 하였습니다. Test case는 맞다고 뜨는데 제출하면 틀렸다고 뜨네요ㅜㅜ 문제에 맞지 않는 잘못된 코드 일까요...? http://boj.kr/eb03bcf5031743d9a74c8465cb6a703c

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

2-I 질문입니다.

미해결

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 80287934번 소스 코드 (acmicpc.net) 큰돌님의 코드와 달리 atoi함수로 벡터에 추가한후 정렬하였습니다. 정답은 같게 나오는데 틀린 이유를 알고싶습니다ㅠ

  • c++
  • 코딩-테스트
큐펀치 댓글 1 좋아요 0 조회수 184

9996번 런타임에러

미해결

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

#include <bits/stdc++.h> using namespace std; vector<string> split(string input,string delimiter){ vector<string> ret; int delimiterPosition; while((delimiterPosition=input.find(delimiter))!=string::npos){ ret.push_back(input.substr(0,delimiterPosition)); input.erase(0,delimiterPosition+delimiter.length()); } ret.push_back(input); return ret; } int main(){ int N; cin>>N; fflush(stdin); string pattern; getline(cin,pattern); vector<string> splited_strings=split(pattern,"*"); string first=splited_strings[0],last=splited_strings[1]; string input[N]; for(int i=0;i<N;i++) cin>>input[i]; for(int i=0;i<N;i++){ // 접두사 if(first!=input[i].substr(0,first.size())) { // 없으면 cout<<"NE\n"; continue; } else input[i].erase(0,first.size()); // 있으면 // 접미사 if(input[i].find(last)==string::npos) { // 없으면 cout<<"NE\n"; continue; } else{ // 있으면 if(last==input[i].substr(input[i].size()-last.size())) cout<<"DA\n"; else cout<<"NE\n"; } } return 0; } 어디서 런타임에러를 유발하는 지 모르겠습니다.

  • c++
  • 코딩-테스트
문상준 댓글 1 좋아요 0 조회수 172

공지

해결됨

객체지향 개념에 바탕을 둔 Modern C++프로그래밍

강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요. 교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.

  • c++
  • 객체지향
부산대학교 AI융합교육원 댓글 1 좋아요 0 조회수 164

1-H 질문있습니다

미해결

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

http://boj.kr/a2bc8496dc1046a495a22dd0185ad515 여기 제 코드입니다. a만큼의 크기를 가진 배열 arr을 사용해서 가장 최근의 a일의 온도를 저장합니다. 최근 a일간의 온도의 최대값은 결국 새로 들어온 값이 가장 오래된 날짜보다 높다면 최대값이 변경되는것이니 해당 부분을 if문으로 처리해서 sum값을 변경시켰는데 오답이 나옵니다. 구간마다 sum을 계산하여 max값을 비교한다면 맞다고 하는데 제 방식이 왜 틀렸는지 이해가 가질 않습니다.

  • c++
  • 코딩-테스트
김현우 댓글 2 좋아요 0 조회수 164

공지

해결됨

C++ 프로그래밍

강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요. 교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.

  • c++
  • 객체지향
부산대학교 AI융합교육원 댓글 1 좋아요 0 조회수 255

주난의 난 질문

미해결

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

저는 bfs와 dfs를 혼용하는 방식으로 코드를 짯는데 이렇게 짜면 단점이 어떤게 있을지 궁금합니다. 큰돌님 항상 강의 잘 듣고 있습니다 감사합니다. #include <iostream> #include <vector> #include <algorithm> #include <queue> #include <stack> using namespace std; int dx[4] = {0, 0, 1, -1}; int dy[4] = { 1, -1, 0, 0 }; int N, M, startX, startY, endX, endY; char board[300][300] = { 0 }; int visit[300][300] = { 0 }; queue<pair<int, int>> q; void print() { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cout << board[i][j] << " "; } cout << "\n"; } cout << "\n"; } void print2() { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cout << visit[i][j] << " "; } cout << "\n"; } cout << "\n"; } void dfs(int x, int y, int a) { //print2(); visit[y][x] = a; for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (nx <0 || nx > M || ny <0 || ny > N) continue; if (!visit[ny][nx] && board[ny][nx] == '0') { dfs(nx, ny, a); } else if (!visit[ny][nx] && (board[ny][nx] == '1'|| board[ny][nx] == '#')) { board[ny][nx] = '0'; visit[ny][nx] = a; q.push({ nx, ny }); } } } void bfs() { q.push({ startX-1, startY-1 }); visit[startY-1][startX-1] = 1; while (!q.empty()) { //print2(); int x = q.front().first; int y = q.front().second; q.pop(); for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (nx <0 || nx > M || ny <0 || ny > N) continue; if (!visit[ny][nx] && board[ny][nx] == '1') { q.push({ nx, ny }); visit[ny][nx] = visit[y][x] + 1; board[ny][nx] = '0'; } else if (!visit[ny][nx] && board[ny][nx] == '0') { dfs(nx, ny, visit[y][x] + 1); if (visit[endY-1][endX-1]) return; } else if (!visit[ny][nx] && board[ny][nx] == '#') { visit[ny][nx] = visit[y][x] + 1; return; } } } } int main() { char symbol; cin >> N >> M; cin >> startY >> startX >> endY >> endX; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cin >> symbol; board[i][j] = symbol; } } bfs(); cout << visit[endY - 1][endX - 1]-1; }

  • c++
  • 코딩-테스트
신혁수 댓글 2 좋아요 0 조회수 218

7-W [2342] 문제 질문입니다.

미해결

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

안녕하세요 큰돌님. 항상 좋은 강의 감사드립니다. 7-W에 제가 생각했을때 같은 논리인것 같은데 1%에서 오답으로 떠 질문 드립니다 ㅜㅜ 아래는 제 코드입니다. #include<bits/stdc++.h> using namespace std; int a[100001]; int n; int dp[100001][5][5]; int go(int idx,int left, int right){ if(idx == n) return 0; int &ret = dp[idx][left][right]; if(ret!=-1) return ret; ret = 987654321; int num = a[idx]; //Left if(left == 0) ret = min(ret,go(idx+1,num,right)+2); if(num == left) ret = min(ret,go(idx+1,left,right)+1); if(abs(left-num)==2) ret = min(ret, go(idx+1,num,right)+4); if((num+1)%4 == left || (num!=1 && num-1 ==left) || (num==1 && left ==4))ret = min(ret,go(idx+1,num,right)+3); //Right if(right == 0) ret = min(ret,go(idx+1,left,num)+2); if(num == right) ret = min(ret,go(idx+1,left,right)+1); if(abs(right-num)==2) ret = min(ret,go(idx+1,left,num)+4); if((num+1)%4 == right || (num!=1 && num-1 ==right) || (num==1 && right ==4)) ret = min(ret,go(idx+1,left,num)+3); return ret; } int main(){ while(true){ int num = 0; cin>>num; if(num==0) break; a[n]=num; ++n; } memset(dp,-1,sizeof(dp)); cout<<go(0,0,0)<<"\n"; } 현재 코드에서 //Left if(left == 0) ret = min(ret,go(idx+1,num,right)+2); if(num == left) ret = min(ret,go(idx+1,left,right)+1); if(abs(left-num)==2) ret = min(ret, go(idx+1,num,right)+4); if((num+1)%4 == left || (num!=1 && num-1 ==left) || (num==1 && left ==4))ret = min(ret,go(idx+1,num,right)+3); //Right if(right == 0) ret = min(ret,go(idx+1,left,num)+2); if(num == right) ret = min(ret,go(idx+1,left,right)+1); if(abs(right-num)==2) ret = min(ret,go(idx+1,left,num)+4); if((num+1)%4 == right || (num!=1 && num-1 ==right) || (num==1 && right ==4)) ret = min(ret,go(idx+1,left,num)+3); 부분만 강의코드와 비슷하게 아래와 같이 바꾸면 ret = min(ret, go(idx+1,a[idx],right)+check(left,a[idx])); ret = min(ret, go(idx+1,left,a[idx])+check(right,a[idx])); 통과가 됩니다... 다른 많은 예제들도 넣어봤는데 잘 돌아가는데 어디서 잘못 짚은걸까요?? ㅠㅠ

  • c++
  • 코딩-테스트
이희수 댓글 2 좋아요 0 조회수 203

c++ 교안

미해결

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. c++ 교안 보면서 익히고있는데요 C++ 학습중인데 어디까지 직접 보면서 공부해야하죠? 강의는 언제부터 보면되나요??

  • c++
  • 코딩-테스트
yh J 댓글 1 좋아요 0 조회수 218

백준 문제 미리 모아둔거 없나요???

미해결

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

강의를 틀기전에 먼저 풀어보려하는데 혹시 강의에 사용되는 문제목록 모아져있는건 없을까요

  • c++
  • 코딩-테스트
김현우 댓글 2 좋아요 0 조회수 310

2-G 코드 질문드립니다.

미해결

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 예시입출력 다 맞고, 로직상 무조건 맞다고 생각하는데 3%에서 틀리다고 나옵니다. 도대체 뭐가 잘못된건지 모르겠습니다.. 도와주십쇼 http://boj.kr/82e12b941d914352baab934b52c8a04b

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

2-B 유기농 배추 질문

미해결

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. bfs를 활용해서 문제를 풀었습니다. 근데 계속 메모리초과가 나는데 그 이유를 알려주시면 감사하겠습니다.. http://boj.kr/b024bff359c64a679143f2c6633ea8c3

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

질문드립니다.

미해결

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

강의에 혹시 다이렉트x 내용도 있을까요? 없다면 다른 강의 중에 다룬 게 있을까요?

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
  • windows-api
김태윤 댓글 1 좋아요 0 조회수 311

안녕하세요 큰돌님 암기왕 문제 질문 드립니당

미해결

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

https://www.acmicpc.net/source/80071421 일단 제 코드입니다. 입력 계수에 대해서 이진탐색을 모두 해보는 풀이를 생각 했습니다. 입력: N 탐색 시간: logN이 걸리니까 NlogN 시간이 걸리고 N은 백만이니, 1000000*20=2000000(이천만)이고 시간제한은 2초니까 가능하지 않나요? 시간초과가 나와서 왜 틀렸는지 피드백을 받고 싶습니다.

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

1-G 질문입니다.

미해결

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

안녕하세요.. 제가 이문제를 다시 푸는 과정에서 reverse함수를 사용해서 풀어보았는데요 예제는 다 맞는데 왜틀리는지 모르겠습니다... 답변 부탁드립니다. http://boj.kr/ee37f6b6daa14f158949673b90e65815 #include <iostream> #include <algorithm> #include <vector> using namespace std; vector<string> solution(const int N, const string& str, const vector<string>& v) { vector<string> answer; size_t pos = str.find('*'); string pre = str.substr(0, pos); string suf = str.substr(pos + 1); reverse(suf.begin(), suf.end()); // cout << "pre = " << pre << ", suf = " << suf << '\n'; // test for (const string& s : v) { string rs(s); reverse(rs.begin(), rs.end()); if (s.find(pre) == 0 && rs.find(suf) == 0) answer.push_back("DA"); else answer.push_back("NE"); // cout << "str = " << s << "\nrstr = " << rs << '\n'; // cout << "answer = " << answer.back() << "\n\n"; } return answer; } int main() { int N; string str; cin >> N >> str; vector<string> arr(N); for (string &s : arr) cin >> s; vector<string> answer = solution(N, str, arr); for (string& s : answer) cout << s << '\n'; return 0; }

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

5-B 질문있습니다.

미해결

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/38bfd119659f450f9f4c86153c28d25d 저는 처음에 stack을 생각하고 다시 해당 stack에 존재하는 요소들을 순서대로 string에 추가하는게 힘들다고 판단되어 deque로 하였습니다. 근데 메모리 초과로 틀려서 ㅠㅠ 어떤 부분이 문제인지 궁금합니다. 항상 감사합니다.

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

2-T 질문있습니다 :)

해결됨

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

안녕하세요 선생님 🙂 선생님께서 알려주신대로 무식하게 풀 수 있는 방법부터 생각하는건 되기 시작했는데요, 아직 시간복잡도까지 고려하는 수준은 아닌가 봅니다 ㅠㅠ 강의를 듣고 아래의 방식의 시간복잡도가 굉장히 커진다는 것은 이해를 했습니다. 그래도 출력 값이 정답이라고 생각을 했는데요, 디버깅을 해보니 2중 for문을 사용하는 부분에서 i가 1인 경우를 인식하지 못하고 바로 i가 2인 경우로 넘어가지더라구요. 그러다보니 첫 번째 테스트케이스는 올바른 답으로 출력이 되지만, 두 번째 테스트케이스는 오답이 나오고 있습니다. 한참을 봐도 제가 무엇을 실수한건지 잘 모르겠습니다..ㅠ 조언 부탁 드립니다 :) https://www.acmicpc.net/source/share/65830377ec624e879c48d979af5762d4

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

인기 태그

인프런 TOP Writers

주간 인기글