묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
2018 연속된 자연수의 합 구하기 백준 사이트에서 메모리 초과 오류가 발생합니다.
이유가 뭘까요 ....?import java.util.Scanner;class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int count = 1; int startIndex = 1; int endIndex = 1; int sum = 1; int n = sc.nextInt(); while(endIndex != n) { if(sum == n){ count++ ; endIndex++ ; sum = sum + endIndex; } else if(sum > n) { sum = sum - startIndex; startIndex++ ; } else { endIndex++ ; sum = sum + endIndex; } System.out.print(count); } }}
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 맞왜틀 질문있습니다.
안녕하세요.처음에 재귀가 떠오르지 않아 반복문으로 구현을 했는데, 테스트 케이스는 전부 맞는데, 내부에서 틀린듯 합니다.아쉽게도 다른 사람들은 77%에서 터지는데, 저는 1%에서 터지는군요...나름 로직은 맞다고 생각하는데 백준에서 어떤 테스트가 왜 틀렸는지 알려주지 않아 답답해 여기에 질문을 올려봅니다.제가 어떤 부분을 놓쳤나요?http://boj.kr/55f3b362377b463397c0298ec922cdf0
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
너무 기본적인 개념 질문드려서 죄송합니다.. ㅠㅠ
안녕하세요 선생님 🙂 플로이드 와샬 개념문제로 11404번 문제를 풀다가 갑자기 삼항연산자의 개념이 헷갈려졌습니다 ㅠㅠ 구글링해도 기본적인 설명만 있고, 교안도 삼항 연산자 관련 내용이 없어서 질문 드립니다.. http://boj.kr/eefe3db0d7aa4338bfffb83a6233db67 // 입력 부분 dist[a][b] = INF ? min(dist[a][b], c) : c; // 출력 부분 else cout << (dist[i][j] == INF ? 0 : dist[i][j]) << " "; 입력 부분에 ==가 아닌 =가 들어가는 이유를 모르겠습니다. 또, = 대신 ==를 넣으면 안되는 이유를 모르겠습니다. 제가 아는 삼항 연산자는if (dist[i][j] == INF) 라는 조건을 만족하면 dist[i][j]가 왼쪽이 되고, 만족하지 않으면 dist[i][j]가 오른쪽이 되는 것을 한 줄로 요약한 코드라고 알고 있습니다.개념이 심하게 헷갈리네요 ㅠㅠ 알려주시면 감사하겠습니다..!!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
어느 부분에서 안되는 건지 모르겠습니다.(먼지 제거할때)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.해당 코드로 하니까 실패했고http://boj.kr/b594a33a5cd74e75aef53810caed4d31해당 코드로 cleanDust부분을 변경하니까 맞았습니다. 왜 1번 처럼 cleanDust를 해주는 거는 틀린 걸까요?http://boj.kr/da76558b5fd7483caa9fe86f42569358
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
개념 강의 중 다익스트라 1753번 질문있습니다 :)
안녕하세요 선생님 🙂 벌써 마지막 강의네요 ^^ 감회가 새롭습니다. 선생님께서 작성하신 코드를 제가 알아보기 편하게 변경하고 있습니다.입력 값을 u, v, w 순서대로 입력을 하였는데 adj배열과 우선순위 큐의 입력을 w, v 순서대로 하셨더라구요. 이걸 v, w 순서대로 입력을 바꾸면 시간초과가 납니다.30분넘게 검증을 거쳤으나, 변수 이름 변경 과정에서 실수가 있는 것 같지는 않았습니다. 혹시나 제가 실수한 것인지, 실수가 없다면 시간초과가 나오는 이유가 무엇인지 알려주시면 감사하겠습니다 🙂 http://boj.kr/38a80ad865d4417ab06bc379f7111a5e
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과 원인을 잘 모르겠습니다.
http://boj.kr/9f72a1bbc1464292ac2339624d68b9d6 도움 요청드립니다...ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
컴파일 에러가 나는데 원인을 모르겠어요 ㅜㅜ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/b607e5846a7142e7b6c87f146bc1a3c9
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-P
연속된 동일한 키의 횟수를 스택에 저장하지 않고서 문제를 풀어보려고 했는데요 계속해서 testcase는 맞는데 문제에서는 통과가 안되네요ㅠㅠ 어디가 문제일까요?? http://boj.kr/843b5e4935f448479d1701b0ed2e3df7
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 질문있습니다!
어떤점이 틀렸는지 혹시 반례를 알 수 있을까요??http://boj.kr/9bf6f69f0bb2401bbac93c7b4b735817
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-D 런타임에러가 나욥
vscode에선 잘 실행되는데 제출시 런타임에러가 납니다 ㅠ http://boj.kr/bb0b0ec8f10a45f58f9e578ffd3694eb#include <bits/stdc++.h> using namespace std; // 입력값을 받는다 만약 s사이즈가 1이면 곧바로 0를 리턴한다. // 2. 절반으로 나눈 값을 저장한다. // 3. string a,b를 선언하고 function(string s, int start를 받는다.) // 4. a와 b를 function을 통해 받고 비교한 후 같다면 1 , 아니라면 0을 반환한다. string input; string f(int start, int size){ string r; for(int i = start; i < start+size; i++){ r += input[i]; } return r; } int main() { cin >> input; if(input.size() == 1) { return 1; } int size = input.size() / 2; int sniff = input.size() % 2 != 0; string a = f(0,size); string b = f(size + sniff,size); reverse(b.begin(),b.end()); int result = 0; if(a == b){ result = 1; } cout << result; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
DP 개념강의 자두나무 질문
안녕하세요 강사님, DP개념강의 설명하실 때 자두나무 코드를 예시로 설명해주셨는데요. 강사님 코드대로 실행해보니 제가 생각한 테스트케이스랑 다르게 나와서 질문드립니다. 입력 3 4111 제 예상: 3강사님 코드 출력: 1 입력3 12111 제 예상: 3강사님 코드 출력: -999999997
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5 - V make 함수 범위
void make(int n, int psum[], map<int, int>& mp) { for (int i = 1; i <= n; i++) { for (int j = i; j <= n + i - 1; j++) { int value = psum[j] - psum[j - i]; mp[value]++; if (i == n)break; } } } 위 코드에서 j의 범위가 j <= n이 아닌j <= n + i - 1인 것인 이유는 원형구조를 선형으로 대체하기 위해 늘려준 범위인 것일까요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-Q 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 선생님 이문제를 풀면서 이해가 안되는 부분이 있습니다.bool check 부분에서 bool flag = 0;으로 둘 때랑 0으로 초기화 하지 않고 bool flag; 로 둘때 초기화를 화면 백준에서 결과 값이 다르게 나옵니다. bool flag;로 두면 시간 초과bool flag = 0으로 하면 맞았습니다. 이렇게 뜨는 데 왜그런걸까요? #include <bits/stdc++.h> using namespace std; int n, m, a[104][104],cnt=1,ret,visited[104][104]; vector<pair<int,int>>v; const int dy[] ={-1,0,1,0}; const int dx[] = {0,1,0,-1}; bool check(){ bool flag = 0; for(int i =0; i < n; i++){ for(int j =0; j < m;j++){ if(a[i][j] == 1) flag = true; } } if(flag) return 0; else return 1; } void dfs(int y, int x){ visited[y][x] = 1; if(a[y][x] == 1){ v.push_back({y,x}); return; } for(int i = 0; i<4;i++){ int ny = y + dy[i]; int nx = x + dx[i]; if(ny < 0 || nx < 0 || ny >= n || nx >= m) continue; if(visited[ny][nx]) continue; dfs(ny,nx); } return; } int main(){ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); cin >> n >> m; for(int i = 0; i < n; i++){ for(int j =0; j < m;j++){ cin >> a[i][j]; } } while(true){ memset(visited,0, sizeof(visited)); v.clear(); dfs(0,0); ret = v.size(); for(pair<int, int> c : v){ a[c.first][c.second] = 0; } cnt++; if(check()) break; } cout << cnt - 1 << "\n" << ret << "\n"; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S 질문
http://boj.kr/3c317ac3fc7940aaa96c9d416b207932안녕하세요 선생님.2-S 효율적인 해킹 문제를 위와같이 풀어보려 했는데 실패했습니다. 매 정점마다 각 정점을 start로 삼아 dfs로 탐색 후, 탐색을 마쳤을 때의 visited개수의 총합을 sum_hacked() 함수로 구해 가장 효율적인 해킹이 가능한 경우를 구하려 했는데요. 예제는 Pass되었으나 채점에서 바로 오답처리가 됩니다.잘못 생각한 부분 힌트 주시면 감사드리겠습니다. 감사합니다.
-
해결됨코딩테스트 [문제 해결 기법]
섹션1-예제1 질문
안녕하세요, 우선 좋은 강의 감사합니다.제가 보기엔 섹션1의 예제1에서 가장 중요한 아이디어는 아래 3가지인 것 같습니다.조작2와 조작3은 해당 칸의 색을 반전 시키는 것 외엔 같다.모든 칸에 우선 조작2를 시행한다.모든 칸에 조작2를 시행하면, 1번 아이디어에 의해 모든 검정타일을 반전 시킬 수 있다.또한, 해설에서 생각의 흐름 또한 1 → 2 → 3 인 것 같습니다.1번은 쉽게 관찰할 수 있는데, 2번 아이디어는 어떻게 생각하는 건가요?제가 혼자 문제에 대해 고민하며 1번 아이디어를 관찰했을 땐, 1번 아이디어를 어떻게 사용해야 할지 감이 잘 안 왔습니다. '조작2를 시행한 칸에 대해 조작3으로 번복하면 해당 칸 외엔 변화가 없고 해당 칸의 색만 바뀐다' 라는 사실까진 도달했지만, 모든 칸에 조작2를 우선적으로 시행해두고 아이디어1을 이용할 생각까진 도달하지 못했습니다. 이런 생각을 하지 못한 사람 입장에선, 모든 칸에 조작2를 먼저 해본다는 게 다소 막연하고 배경의 motivation이 없이 갑자기 툭 나온 생각 같다는 느낌이 들어서 질문 드립니다.더 나아가, 어떻게 이런 생각들을 운에 맡기지 않고 논리적으로 접근할 수 있을까요?
-
해결됨시니어 면접관이 알려주는 개발자 취업과 이직 한방에 해결하기 [이론편]
기술 스택에 대한 질문
안녕하세요 신입 입장에서 채용공고를 보다 보면 사용하는 기술에 대해 나열되어 있는 것을 볼 수 있는데요. 만약에 지원을 하려면 해당 기술 스택에 대해 자세히 다 알고 있어야 될까요.?
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
두수의합 Counter 사용
안녕하세요강사님 잘 보고 있습니다!!아래와 같이 해도 괜찮을까요?감사합니다~!from collections import Counter def solution(nums, target): answer = [0]*2 dict = Counter(sorted(nums)) for i in dict: if dict[target-i] == 1: return sorted([i, target-i]) return answer
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-D lower_bound 질문있습니다 :)
안녕하세요 선생님 🙂 lower_bound와 관련하여 궁금한 것이 있어서 질문드립니다. 해당 문제는 lower_bound를 이용하여 A 안에 있는 요소들 중 하나를 골라서 B에 있는 요소보다 큰 경우를 누적하여 더한 후에 출력하는 문제였습니다. 문제의 결과 값에서 lower_bound의 역할을 유추해보면, 1, 2번째 파라미터에 넣는 배열의 범위에서 3번째 파라미터에 있는 요소보다 작은 요소의 개수를 출력해주는 함수라는 것을 알 수 있었습니다. 반대로 upper_bound는 작은 요소가 아닌 큰 요소의 개수를 출력해주는 함수라는 것을 알게 되었습니다. 그렇다면, 같은 요소의 개수를 출력해주는 방법도 있을 거라고 생각하는데요, 구글을 아무리 뒤져봐도 키워드 선택을 잘못해서 그러는건지.. 관련 자료를 찾을 수 없었습니다. 혹시 이런 함수가 따로 있다면 알려주시면 도움이 많이 될 것 같습니다 :) lower_bound가 같은 경우도 처리해준다는 자료를 보긴 했는데요, 이 자료에 신뢰성이 있으려면 해당 문제에서 A와 B의 요소가 같아도 A가 B를 잡아먹을 수 있다는 조건을 만족해야 할 것 같습니다. 아래는 제가 보았던 자료의 링크입니다.https://chanhuiseok.github.io/posts/algo-55/
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
선형탐색 -> "틀렸습니다" 가 나옵니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님. 선형탐색으로 하면 어떻게 되는지 궁금하여 백준에 해당 코드를 제출하여보았는데 예상과 다르게 "틀렸습니다" 가 나옵니다. 선형탐색은 시간복잡도가 더 클 뿐 틀린것은 아니기에 "시간초과" 가 나와야 되는거 아닌가요??#include<bits/stdc++.h> using namespace std; int n; int m; int a[300002]; int ret = 987654321; bool search(int mid) { int t_ret = 0; for (int j = 0; j < m; j++) { t_ret += a[j] / mid; if (a[j] % mid) t_ret++; } return t_ret <= n; } int main() { cin >> n >> m; int left = 1, right = -1; for (int i = 0; i < m; i++) { cin >> a[i]; right = max(right, a[i]); } ret = right; for (int i = left; i <= right; i++) { if (search(i)) { ret = min(ret, i); break; } } cout << ret; return 0; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5 - S 실전 관련 질문 드립니다..!
풀긴 했는데 메모리랑 시간 사용량이 어마어마 해서요..실전이 얼마 안남아서 실전에서도 이렇게 풀어도 되나 싶어서 여쭤봅니다... 제가 파악한 큰돌님과 저의 코드 차이점은저는 연산 기호를 사용할 수 있냐는 기준을카운팅 배열을 쓰고 원복하고 했던 거랑수식들을 계산할 때, 스택에 넣고 계산하는 방식을 쓴 게 가장 큰 차이인 것 같습니다.그리고 실제 문제로 이런 문제가 나온다면 몇 분 안에 풀어야 될지도 궁금합니다..! 저는 40~50분 안에 풀면 안정권이라 생각했는데 큰돌님 의견이 궁금하네욤!http://boj.kr/229b1729870841dfa19aaa13c1760073