묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 메모리초과 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.dfs에서 2차원 벡터를 계속 복사하는 방식을사용했는데 메모리 초과가 떴습니다벡터를 계속 복사해서 그런걸까요?아님 무엇때문에 메모리 초과가 난걸까요?http://boj.kr/10f3e6d1d9744b5286cd33479677c430
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과가 나와서 질문드립니다.
강사님의 영상은 문제를 풀고 난 후, 잘 안 풀릴 때 보는게 좋은 것 같아 저만의 방식으로 푼 코드입니다.시간초과가 나왔는데, 어디서 시간을 잡아먹는건지 감이 잡히지 않아서 글 올립니다.포켓몬이 알파벳으로 주어지는지, 숫자로 주어지는지에 대한 판별은 string으로 값을 받고 0번째 인덱스의 값이 65와 같거나 크고 90과 같거나 작으면 알파벳이라 판단. 아닐경우 숫자로 판단하여 출력하게 하였습니다.아래가 제 코드입니다.http://boj.kr/93f1ddafe1484c2b892e25729c745365
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 다른 풀이
저는 deque를 사용해서 풀었는데 이 풀이 방법이 괜찮나요??#include <bits/stdc++.h>using namespace std;string name;int cnt[26];deque<char> answer;int main() { cin.tie(0)->sync_with_stdio(0); cin >> name; for (int i = 0; i < name.size(); i++) { cnt[name[i] - 'A']++; } int check = 0; for (int i = 0; i < 26; i++) { if (cnt[i] % 2 == 1) { check++; answer.push_back('A' + i); cnt[i]--; } if (check > 1) { cout << "I\'m Sorry Hansoo"; return 0; } } for (int i = 25; i >= 0; i--) { while (cnt[i] > 0) { answer.push_back('A' + i); answer.push_front('A' + i); cnt[i] -= 2; } } while (!answer.empty()) { cout << answer.front(); answer.pop_front(); } return 0;}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 질문있습니다
http://boj.kr/5a173f75eb094fd0a5ffef8f9387af5e다음과 같이 코드를 작성했습니다.백준에서 56%정도 됬을때 틀렸다고 나오는데제가 생각한 틀린 이유로는무조건 ()를 추가한다. 전체가 압축이 가능한 경우에도전체를 검사하고 4등분을 해야하는데 4등분한 것부터 검사한다.인거 같습니다. 혹시 이 이유로 틀린게 맞을까요??저기서 조금 수정해서 답이 나오려면 어떤부분을 어떻게 고쳐야 할까요??
-
미해결김영한의 실전 자바 - 중급 2편
문제와 풀이4 - Queue
안녕하세요 영한님 🙂 항상 감사한 마음으로 강의 잘 듣고 있습니다 ㅎㅎ별거 아닌 오탈자이긴 한데, 큐 두번째 문제에서 실행 결과 부분 오탈자가 있어서 말씀드립니다! "작업 시작" -> "==작업 시작==""작업 완료" -> "==작업 완료=="
-
미해결세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
BOJ6603질문있습니다!
안녕하세요.문제 풀다가 강의랑 백준 페이지에서는 입력할수 있는 k의 범위가 서로 달라서 궁금해서 여쭤봅니다.!!백준 페이지에서는 입력할 수 있는 k의 범위가 6<k<13인데요 강의나 노션에서는 제약 조건이 6 <=k <= 13인데 혹시 시간복잡도를 구하기 위해서 일부러 범위를 이렇게 잡은 건지 혹시 다른 이유가 있는지 알려주실 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H질문
bool is_vowel(int idx) { return (idx == 'a' || idx == 'e' || idx == 'i' || idx == 'o' || idx == 'u'); }bool is_vowel(int idx) { if (idx == 'a' || idx == 'e' || idx == 'i' || idx == 'o' || idx == 'u') return true; else false;}이 두 코드가 같다고 생각이 드는데 왜 결과값이 다르게 나올까요??
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
graph
dfs 영상을 쭉 보고있는데요 ㅎ문제들 마다 규칙이거의 무조건적으로 visited 와 2차원 graph 가 생성이 되나요 ??visited = []graph = [[False] *MAX for _ in range(MAX)]2. MAX 를 두시는 이유가 뭔가요 ??
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
재귀 함수 Depth
영상에서 23:48 부분 보고있는데요.칼럼 2에 5를 제일 하단에다가 적었는 이유가 어떤 규칙이 있는건가요 ??그리고 5 옆에는 비워두고 1 ( 무시 ) , 2 ( 무시 ) 6을 적으신것도 어떤 규칙이 있는건가 ? 궁금해서 여쭤봅니다 !
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 질문있습니다.
http://boj.kr/5c6791ecb33241cab42be762031958c3안녕하세요 큰돌님이번 문제는 강의를 봐도 잘 이해가 되지 않아서 핵심으로 짚어준 부분을 참고하여 제가 로직을 구현했는데, 어려움이 있어 질문드립니다.백준 문제에서 주어진 예제는 정답이 나오는데, 아래 링크의 질문 게시판에 있는 반례는 모두 틀리게 나옵니다.https://www.acmicpc.net/board/view/89304코드에 사용되는 변수는 다음과 같습니다.x = bfs로 방문하는 수빈이의 현재 위치t = 수빈이가 해당 위치에 도착하는 최단 시간bp = 해당 시간(t)에 동생의 현재 위치제가 생각해낸 방법은 다음과 같습니다.먼저 동생이 앞으로 가며 위치에 도달하는 시간을 brother[] 배열에 기록했습니다. 수빈이가 동생을 만날 수 있는 방법을 다음 두 가지로 분류했습니다. (1) 수빈이가 앞으로 가며 특정 위치에서 동생과 만난다.(2) 수빈이가 동생보다 먼저 앞으로 간 다음에, 왔다갔다 하며 동생을 기다린다. (이 때 홀수, 짝수 시간으로 동생과 만날 수 있는지 확인한다.)bfs를 단계 별로 구현하기 위해 5분 45초에 나오는 플루드 필(?)을 수빈이가 해당 위치에 도착하는 최단 시간(변수 t)로 구현하였습니다.+제 코드의 오류를 하나 발견하였는데 다음과 같습니다.예제 n = 18, k = 66 를 넣었을 때, 수빈이는 18 36 37 38 76 순으로 방문하고, 동생이 66, 67, 69, 72, 76 순으로 방문 했을 때 정답인 4초가 나오지만, 제 코드 상으로는 76을 최단 시간인 3초에 방문할 수 있으므로, 수빈이가 동생을 만나지 못한다고 판단하여 만날 수 있는 다음 지점을 답으로 출력합니다.위와 같은 오류를 어떤 논리로 잡아야 할지 아무리 생각해도 모르겠고, 강사님의 코드도 도저히 이해가 가지 않아 질문 드립니다. ㅠㅠ
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
백준 DFS
백준을 기준으로 하시는 이유가 있나요 ??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
동생이 도착한 시간 - 수빈이가 도착한 시간 이 짝수일 때
http://boj.kr/c287b933ed0442d4ba02329f7601b61b선생님, 안녕하세요.동생의 위치를 미리 구해놓고, 수빈이가 그 위치에 갈 수 있는지를 구하는 식으로 했습니다.bfs를 이용했고, bfs의 로직 안에 현재 수빈이가 동생보다 빨리 방문했을 때를 처리하는 로직을 넣었는데요. 강의에서 설명해주셨던 것처럼, +1 -1을 하면 제자리로 돌아올 수 있고, 이때 2초가 걸리기 때문에 시간차가 반드시 짝수여야만 수빈이가 동생을 찾을 수 있기 때문에,동생이 오는 시간 - 현재 수빈이가 오는 데 걸린 시간 이 짝수 일때, 동생이 오는 시간을 최소값으로 넣는 로직을 넣었습니다.그런데 답이 틀렸다고 나와서, 1)왜그런건지? 2)visited배열을 2차원으로 한거랑 무슨 차이가 있는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
동생이 도착한 시간 - 수빈이가 도착한 시간 이 짝수일 때
http://boj.kr/c287b933ed0442d4ba02329f7601b61b선생님, 안녕하세요.동생의 위치를 미리 구해놓고, 수빈이가 그 위치에 갈 수 있는지를 구하는 식으로 했습니다.bfs를 이용했고, bfs의 로직 안에 현재 수빈이가 동생보다 빨리 방문했을 때를 처리하는 로직을 넣었는데요. 강의에서 설명해주셨던 것처럼, +1 -1을 하면 제자리로 돌아올 수 있고, 이때 2초가 걸리기 때문에 시간차가 반드시 짝수여야만 수빈이가 동생을 찾을 수 있기 때문에,동생이 오는 시간 - 현재 수빈이가 오는 데 걸린 시간 이 짝수 일때, 동생이 오는 시간을 최소값으로 넣는 로직을 넣었습니다.그런데 답이 틀렸다고 나와서, 1)왜그런건지? 2)visited배열을 2차원으로 한거랑 무슨 차이가 있는지 궁금합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어봤는데 괜찮을까요?
function App() { const solve = (m ,arr) => { let answer = 0; let n = arr.length; arr.sort((a,b) => (a[0] + a[1]) - (b[0] + b[1])); // 50% 쿠폰, 상품 for (let i = 0; i < n; i++) { let money = m - (arr[i][0] - arr[i][1]); let cnt = 1; for (let j = 0; j < n; j++) { if (j === i) { continue; } money = money - (arr[j][0] + arr[j][1]) if (money > 0) { cnt ++; } } if (answer < cnt) { answer = cnt } } return answer } const arr = [[6,6],[2,2],[4,3],[4,5],[10,3]]
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-D 질문있습니다!
문제에서 주어지는 조건은 맨 왼쪽 아래가 (0,0) 지점이라고 했는데 2차원 배열로 생각해보면 맨 왼쪽 위가 (0,0) 입니다. 강사님의 코드를 출력해보면 이런식으로 나오는데 문제에 있는 그림이랑 비교해보면 위치가 반대입니다. 이렇게 나오는 이유가 위에서 언급한 (0,0)의 기준이 맨 밑에서 왼쪽인지, 맨 위에서 왼쪽인지의 차이인듯 한데 상관없는건가요..?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
백트래킹 관련해서 질문 드립니다!
n = int(input()) # 식재료 개수 minimums = list(map(int, input().split())) # 최소 영양소 기준 ingredients = [list(map(int, input().split())) for _ in range(n)] # 재료들 # 선택한 식재료를 담을 배열 초기화 picked = [] result_picked = [] # 최소 비용 초기화 (정답값) min_cost = 987_654_321 # 조건 확인 def is_bigger(sum_nutrients): global minimums for i in range(4): if sum_nutrients[i] < minimums[i]: return False return True # subset 구하기 def recursion(k): global picked, min_cost, result_picked if k == n: # 재료를 모두 선택했다면 # 뽑은 재료가 조건에 만족하는지 확인 # picked의 영양소들의 합이 minimums의 각 최소 영양소보다 커야 함 # 뽑은 재료의 각 영양소의 합을 담기 sum_nutrients = [0, 0, 0, 0] sum_cost = 0 for i in range(len(picked)): sum_cost += ingredients[picked[i]][4] # 비용 담기 for j in range(4): sum_nutrients[j] += ingredients[picked[i]][j] # 최소 영양소보다 큰 지 확인 # 근데 사전 순으로 가장 빠른 것을 출력해야 한다. # 어떻게 ? if is_bigger(sum_nutrients) and sum_cost <= min_cost: if sum_cost < min_cost: min_cost = sum_cost # 최소 비용 업데이트 result_picked = picked[:] # 선택한 배열 저장 elif sum_cost == min_cost and picked < result_picked: result_picked = picked[:] return # 뽑은 재료의 인덱스를 picked에 담고 picked.append(k) recursion(k + 1) # 다음 재료 선택 # 재료 선택 안하는 경우엔 picked.pop() # 현재 재료를 빼고 recursion(k + 1) # 다음 재료 선택 recursion(0) # 출력 if min_cost == 987_654_321: print(-1) else: print(min_cost) res = [x + 1 for x in result_picked] print(*res) 19942 다이어트 문제입니다.저는 항상 백트래킹 할 때 이렇게 매개변수를 그냥 간단히 하는 식으로 하는데, 강사님은 매개변수에다가 설정을 하시더라구요강의보면서 직관적이기도 하고 되게 좋은 방법이라고 생각했는데,이렇게 해도 상관없나요?
-
해결됨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또한 앞과 뒤를 비교하는 코드를 작성했습니다. 선생님 강의를 듣고 처음 한글자가 아닌 *을 기준으로 문제를 풀어야한다는 것을 알게됬습니다. 그런데 위 코드에서 문법적인 오류가 있는 것 같은데 문법적으로만 왜 오류인지 궁금합니다.감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문있습니다!
안녕하세요! 강의와는 다른 방식의 로직으로 풀어보았습니다.v 라는 방문처리 할 수있는 배열을 만들었습니다. 재료 배열을 순회하면서 M에서 해당 값을 뺏을 때 배열에 그 값이 있다면 입력값의 위치와 M-해당값의 위치를 방문 처리 해주면서 결과값을 count 하였습니다. Test case는 맞다고 뜨는데 제출하면 틀렸다고 뜨네요ㅜㅜ문제에 맞지 않는 잘못된 코드 일까요...?http://boj.kr/eb03bcf5031743d9a74c8465cb6a703c
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.80287934번 소스 코드 (acmicpc.net)큰돌님의 코드와 달리atoi함수로 벡터에 추가한후 정렬하였습니다.정답은 같게 나오는데 틀린 이유를 알고싶습니다ㅠ
-
미해결김영한의 실전 자바 - 중급 2편
comparable 질문
안녕하세요.강의에서 다음의 코드를 비교한 걸 보여주셨을 때 콘솔에 출력되는 개수가 다른데 왜 그런걸까요 ? 자바 버전에 따라 내부 구현된 정렬 알고리즘이 달라서 그럴까요 ? (강의는 출력 2개)@Override public int compareTo(MyUser o) { System.out.println(this + "vs " + o); return this.age < o.age ? -1 : (this.age == o.age ? 0 : 1); }MyUser{id='B', age=10}vs MyUser{id='A', age=30}MyUser{id='C', age=20}vs MyUser{id='B', age=10}MyUser{id='C', age=20}vs MyUser{id='A', age=30}MyUser{id='C', age=20}vs MyUser{id='B', age=10}