묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-h 질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. https://www.acmicpc.net/submit/4659/85159031안녕하세요. 선생님 문제를 푸는 와중에 예시 답안은 맞는데 제출하면 틀렸다고 하는데 어떤 부분이 틀렸는지 잘 모르겠습니다 ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 질문있습니다 :)
안녕하세요 선생님 🙂 오랜만에 질문드리는 것 같습니다 ㅎㅎ 사실 이 문제에서 모르는 부분이 있는 것은 아니지만, 별거 아닌 실수로 인해서 발생한 부분에 의문이 생겨서 질문 드립니다. 실수로 visited배열을 전체 초기화가 아닌 54 * 54만큼만 INF로 초기화시켜주었습니다. 테스트케이스는 4 * 4 배열인데요, 실수를 했어도 테스트케이스의 범위는 지켰기 때문에 결과 값이 정상적으로 나와야 한다고 생각합니다. 하지만, 테스트케이스의 결과 값이 "IMPOSSIBLE"로 출력이 됩니다. 이유가 뭘까요..?? http://boj.kr/b731d2b778284e37b9aa54fb079a30ba
-
해결됨김영한의 실전 자바 - 중급 2편
직접 구현하는 연결 리스트2- 데이터 추가 삭제1, 코드 리뷰 좀요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 영상 강의를 보면서 영상에 나온 그림을 보면서 코드를 만들어봤습니다.그래서 코드 리뷰 좀 받고 싶게 되더군요.좀 부족하지만 올립니다.힌트는 동영상에 나오는 그림에 나오는 노드 연결 했을때 나오는 코드(초록색 으로 칠해져 잇는 그림 들) 를 보고 영상을 돌려보면서 만들었습니다.메인이 된것은 NodeMain3에서 스테틱 메서드 입니다.반환이 안되면 값이 똑같이 나와서 반환을 해주었습니다.(이유를 모르겠음)메인 코드 결과추가1인덱스 리무브에서, 맨마직꺼 리므브는 안되겟네요. 올리고나서 발견..추가2설명 하라고 하신다면 솔직히 못 하겠습니다. sout로 node 값 찍어 보고, 어찌저찌 하다가 된거 라서요. 답변 부탁 드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5 - G 투포인터 low,high 시작 위치 질문
http://boj.kr/0078fb786ad54f33b71c760f7301177f우선 보았을 때, 저는 low를 0 high를 a.size()로 두었습니다. 그리고 아래와 같은 로직으로 짰는데, 시간 초과가 나더라구요... 일반적으로 실행해도 감소만 시키느라 답변이 나오지더 않더라구요.low, high를 처음에 두신 이유가 있으신지 궁금합니다! ll l = 0, r = a.size(); while (l != r) { ll sum = 0; for (ll i = l; i < r; i++) sum += a[i]; if (sum < n) { l++; } else if (sum > n) { r--; } else if (sum == n) { l++; ret++; } }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2 - H 수학문제
https://www.acmicpc.net/source/85152489BigInt로 정렬해서 풀었는데 틀렸다고 나오더라구요 ㅜ3%에서 틀리는데 왜 틀리는지를 모르겠습니다 ㅜ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5 - E 풀이까지 가는 생각
항상 그리디가 어려웠는데 오랜만에 풀어보니 답은 맞는데, 뭔가 이게 맞나라는 생각이 너무 들어서 생각 흐름이 맞는지 질문드립니다!블로그에 개인적으로 정리한 글이라 반말인점 무시해주시면 감사하겠습니다 ㅠ 무식하게 하기엔 범위가 10만이고 범위가 존재해서 그리디가 생각났다. 우선, 위 사진처럼 생각해봤다. 순서 정렬은 start 시간 기준으로 하는게 맞다. 왜냐하면 회의 시간이 짧은 걸로 sort 하면 100000에 시작하고 100001로 끝나는 게 처음에 배치되기 때문이다. 끝도 의미가 없으니 시작으로 순서 정렬을 잡았다.그럼 어떤 예외가 있을까 싶었는데 사진의 맨 위에 엄청 긴 선 같은 부분이 문제다. start가 가장 작으니 배열의 처음에 위치하기 때문이다. 따라서if (prev_s < s && e < prev_e)위와 같이 이전 값의 사이에 현재 해당 값이 존재하면 (이전 = 긴 선, 현재 = 긴 선 다음으로 start가 빠른 선) 면적은 줄지만 다른 회의가 잡힐 공간 자체는 늘어나게 되니 무조건 이득인 것이다. 따라서 저럴 땐, 이전 친구를 pop해주고 현재 친구를 push 해줬다.이외에 이전의 끝과 현재의 시작이 겹치거나 더 크면 회의실을 잡을 수 있으니 push 해준다. 반대의 경우는 회의중이기 때문에 회의실을 잡지 못하기 때문에 따로 push 해주지 않는다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 질문있어요
http://boj.kr/5bd8b854c5154aa3bebd77b37b07b8a1시간복잡도는 O(n*comp)으로 보이고 메모리도 넘지 않는 것 같은데 예제들은 정상 작동하면서 제출할때는 틀렸다고 나옵니다. 반례가 무엇인지 도저히 모르겠습니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
7강 RGB 색칠하기 질문 있습니다.
// 아래 풀이법에서 제시해주신 풀이법과 비슷하게 풀이한 것 같으나 백준에서는 자꾸 45% 쯤에서 오답처리가 됩니다 ㅜㅜ... 제 알고리즘에 어떤 문제가 있는 걸까요... #include <iostream> #include <vector> using namespace std; int N; vector<int> R; vector<int> G; vector<int> B; int dp[1001][3]; void Input() { cin >> N; for(int i = 0; i < N; i++) { int r, g, b; cin >> r >> g >> b; R.push_back(r); G.push_back(g); B.push_back(b); } } void DP() { dp[0][0] = R[0]; dp[0][1] = G[0]; dp[0][2] = B[0]; for (int idx = 1; idx < N; idx++) { for (int rgb = 0; rgb < 3; rgb++) { if (rgb == 0) { dp[idx][rgb] = min(dp[idx - 1][1], dp[idx - 1][2]) + R[idx]; } else if (rgb == 1) { dp[idx][rgb] = min(dp[idx - 1][0], dp[idx - 1][2]) + G[idx]; } else if (rgb == 2) { dp[idx][rgb] = min(dp[idx - 1][0], dp[idx - 1][1]) + B[idx]; } } } int minVal = INT16_MAX; for (int i = 0; i < 3; i++) { if (dp[N - 1][i] < minVal) { minVal = dp[N - 1][i]; } } cout << minVal << endl; } void Solve() { DP(); } int main() { Input(); Solve(); }
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
11726 런타임 질문
안녕하세요 강사님, 백준 11726번 관련 질문 드립니다. 노션에 나온 정답지는# input N = int(input()) # solve dp = [0] * (N + 2) dp[1] = 1 dp[2] = 2 for n in range(3, N + 1): dp[n] = (dp[n-1] + dp[n-2]) % 10007 print(dp[N]) 으로 되어있습니다.그런데 강의에서는 dp = [0] * (N + 2)부분이 dp = [0] * (N + 1)로 되어있습니다. 백준에 dp = [0] * (N + 1)로 제출하면 런타임 에러가 발생하는데,그 이유를 알 수 있을까요?dp[N]까지 접근하는건데, 0번째 인덱스를 고려한 N+1이아닌, N+2는 왜 필요한지 모르겠습니다.(강의나 노션에 추가 설명이 보이지 않아서 여쭤봅니다) 감사합니다.
-
미해결카카오 코테 6주 합격! 실전 파이썬 코딩테스트
추천문제 2667번 질문이 있습니다.
import sys sys.setrecursionlimit(10000) input = sys.stdin.readline N = int(input().rstrip()) graph = [list(map(int, input().rstrip())) for _ in range(N)] dy = [-1, 1, 0, 0] dx = [0, 0, -1, 1] visited = [ [False] * N for _ in range(N) ] distances = [] def dfs(y, x): stack = [(y, x)] distance = 1 while stack: cy, cx = stack.pop() for i in range(4): ny = cy + dy[i] nx = cx + dx[i] if 0 <= ny < N and 0 <= nx < N: if graph[ny][nx] == 1 and not visited[ny][nx]: visited[ny][nx] = True stack.append((ny, nx)) distance += dfs(ny, nx) return distance for i in range(N): for j in range(N): if graph[i][j] == 1 and not visited[i][j]: distances.append(dfs(i, j) - 1) print(len(distances)) for d in sorted(distances): print(d)이렇게 제가 풀어봤는데요, 예시 입출력은 잘 나오는데 백준에 제출하면 틀렸다고 나오네요.어느 부분에서 반례가 있는 것일까요?
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
1강 시간복잡도 중간에 중첩for문 직전에 상수는 상관없어요 하신 부분이 이해가 안됩니다
중첩 for문은 오래걸리는거 알겠는데 앞전에 상수? for문이 별도로 3개 있던 부분에서 상수는 상관없다고 한 부분이 무슨뜻인지요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. #include <bits/stdc++.h> using namespace std; int n,m, visited[51][51], ret = 0; char a[51][51]; const int dy[] = {-1,0,1,0}; const int dx[] = {0, 1,0,-1}; void bfs(int y, int x){ queue<pair<int,int>> q; memset(visited, 0, sizeof(visited)); visited[y][x] = 1; q.push({y,x}); int cnt = -1; while(q.size()){ tie(y,x) = q.front(); q.pop(); 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 || a[ny][nx] == 'W' || visited[ny][nx]) continue; visited[ny][nx] = visited[y][x] + 1; q.push({ny,nx}); ret = max(ret, visited[ny][nx]); } } return; } int main(){ cin >> n >> m; for(int i =0; i<n; i++){ for(int j =0; j <m; j++){ cin >> a[i][j]; } } for(int i =0; i<n; i++){ for(int j =0; j <m; j++){ if(a[i][j] == 'L' && visited[i][j] == 0){ bfs(i,j); } } } cout << ret-1 << "\n"; return 0; }안녕하세요 선생님 제가 풀었던 문제인데 if(a[i][j] == 'L' && visited[i][j] == 0){ bfs(i,j); } visited[i][j] == 0 이분분 때문에 자꾸 틀렸다고 나옵니다. 생각 해봐 없어서 되긴 하지만 있었도 문제가 없지 않나요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
정수론 약수 빠르게 구하기 질문
문제 2. 약수 빠르게 구하기 ( #1978, #11653, #14232 )15 # 숫자 n 2 # 숫자n의 약수의 개수 3 5 # 숫자n의 약수들해당 파트에서답이 위와 같다고 하셨는데, 15의 약수는 1, 3, 5, 15로 4개 아닌가용??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 맞왜틀 질문드립니다!
http://boj.kr/e89b80b1d57b459f8b5e7bbeb1ff1dc2 강의를 보지 않고 풀었을 때 완벽히 푼 거 같고 예시도 다 통과하는데 77%에서 틀렸다고 뜹니다.. 뭐가 잘못된 건지 궁금합니다..!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-O 반례나 풀이오류를 알 수 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.자바입니다..백준 질문게시판과 강의 커뮤니티의 반례는 다 성공했습니다.https://www.acmicpc.net/source/share/2972691d0fcd4550a0389bb53efe4391
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-V 질문있습니다
go라는 함수에서 ret을 -1e6으로 초기화 해야하나요?왜 -1은 안되는것일까요?0은 모금액 0일 수도 있기 때문에 가능하다고 납득이 됩니다. 하지만 문제에서 모금액은 1,000,000 이하의 자연수들이라는 조건이 있어서 음수가 나올 수가 없다고 생각합니다.최소 -1,000,000 해야 정답 처리되더라구요 너무 궁굼해서 질문 올립니다.
-
해결됨김영한의 실전 자바 - 중급 2편
노드와 연결1 - 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨 질문을 남깁니다.노드와 연결1 노드를 배우면서 스트링 빌더의 append메서드가 생각이 났습니다.그래서 중급1편에 배운 append메서드에 대해서 찾아보고 작동 방법에 대해서 찾아보고 자기 자신을 참조해서 스트링 빌더가 돌아가는것을 확인을 할수가 있었습니다.이런 것 을 보고 노드가 '스트링 빌더 에서 파생된 작품?(응용) 아닌가' 라는 생각이 듭니다. 그래서 여기서 질문이첫 번째노드가, 스트링 빌더나, 메서드 체인닝 기법에서 파생된 작품인가요? 두 번째스트링 빌더의 apeend의 this와, node의 new의 차이점이라고 할까요? 이런 것이 어떻게 다른지 비교해서 가르켜 주시면 안될까요?뭔가 대조 되는 게 있는 것 같아서, 혹 이 두가지 가 대조가 가능하다면 대조 설명을 해주시면 감사하겠습니다. 추가1다음 강의 에서 toString할때 스트링 빌더 및 append메서드가 나와서.. 좀 당황스럽기는 한데. 이거 때문에. 생각 난 것은 아닙니다. 중급1편에서 스트링 빌더를 공부할 때sb.append(내용).append(내용).append(내용);first.next.next = new Node("C"); 이거랑 비슷해서 생각이 난거 입니다. 그래서 중급1편의 코딩 내용들을 뒤져본거고, pdf도 뒤져봤습니다.증거 사진 이요.. 답변 부탁 드립니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
브루토 포스 백준 1342 질문
s = list(input())n = len(s)choose = []check = [False] * len(s)ans = []def check_ad(s): for i in range(len(s)-1): if s[i] == s[i+1]: return False return Truedef make(level): if level == n and check_ad(choose): result = ''.join(choose) if result not in ans: ans.append(result) for i in range(n): if check[i]: continue choose.append(s[i]) check[i] = True make(level + 1) choose.pop() check[i] = False make(0)print(len(ans)) 안녕하세요 강사님! 위 코드는 시간 초과가 나는데 순열 강의 알고리즘을 그대로 사용한 것입니다! 강사님의 순열 코드는 시간 초과가 안나는데 왜 이거는 시간초과가 날까요? 내장된 permutation이 효율적으로 구현된 것일까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - L 시간 초과
안녕하세요 큰돌님! 오랜만에 질문드립니다!http://boj.kr/ffa51980cf4e43d78718101ba7fea04f위 코드는 시간 초과 없이 맞는 코드고http://boj.kr/e3c9471b62724bd9819cc038d6127c47위 코드는 시간 초과가 64%에서 생기는 코드입니다 로직적인 차이도 없는 거 같고 빠르다 해도 이진 트리 map이 아닌 해시값 기반인 unordered_map이 더 빠를 거 같은데, 왜 시간 초과가 나는 지 궁금해서 질문드립니다!
-
미해결카카오 코테 6주 합격! 실전 파이썬 코딩테스트
그리디 챕터 들어가며 파트 내용이 이상하네요
비선형 자료구조에 대한 내용이 나오는 것 같은데, 의도하신 것인가요...?