묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
공간복잡도 질문입니다!
공간복잡도가 N인 경우는 큰 차이가 없다고 이해했습니다.예제 코드에서도 29, 30 처럼 N인 경우를 확인하였습니다.그렇다면 공간복잡도가 N^2인 경우는 어떤 예제 코드가 될 수 있을까요??시간복잡도는 이해가 갔는데(ex. 이중for문) 공간복잡도가 N^2인 경우는 어떻게 되는지 궁금합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 질문있습니다.
안녕하세요. 제가 푼 풀이도 괜찮은 풀이인지 궁금하여 질문 드립니다.http://boj.kr/cbb841d4775441b4a884e1b8227627ee감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-F 문제 드래곤 전투를 while문으로 고쳐보고 싶습니다.
안녕하세요 큰돌님!! 강의 수강중에 궁금증이 있어 질문 드립니다.이분탐색을 하다가 체크하는 과정 중 드래곤과 플레이어가 전투중일때if(monsterHp % currentAttack ==0) { currentHp -= (monsterHp/currentAttack -1)*monsterAttack; } else { currentHp -= (monsterHp/currentAttack)*monsterAttack; } if(currentHp <=0) { return false; }이렇게 구현 하였을 경우 맞았다고 나옵니다.하지만 while(true) { monsterHp -= currentAttack; if(monsterHp<=0) { break; } currentHp -= monsterAttack; if(currentHp<=0) { return false; } }이렇게 while문으로 구현하였을 경우 시간초과가 나오면 이해하지만 백준 정답 사이트에서 "틀렸습니다"라고 나옵니다. 혹시 제가 짠 while문에서 처리하지 못한 예외처리가 있을까요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
java로 포팅
큰돌님 C++강의를 수강하며 알고리즘 문제를 풀어나가고 있는데 언어를 java로 포팅하기로 해서 학습법 관련해서 질문하고 싶습니다!기존에 수강하며 풀었던 문제들을 Java로 다시 풀어보면서 복습겸 문법을 체화하고 강의 목록에 있는 문제들을 아이디어 위주로 참고하고 자바로 풀어나가며 학습하는 방법이 어떨지 궁금합니다. 다른 좋은 방법이 있다면 혹시 추천해주실 수 있을까요?감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 이차원 배열 회전 질문드립니다.
교안 코드 중, resize()하는 코드가 있던데, 저의 코드는 resize()를 안해도 돌아가던데, resize()가 꼭 필요한가요?key = temp는 key 변수에다가 temp의 주소값을 할당하므로 resize()가 필요없다고 생각합니다. #include<bits/stdc++.h> using namespace std; typedef long long ll; vector<vector<int>> v = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}}; void left_90_rotate(vector<vector<int>> &key){ int n = key[0].size(); int m = key.size(); vector<vector<int>> temp(n, vector<int>(m,0)); for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ temp[i][j] = key[j][i]; } } key = temp; } void rotate_90_right(vector<vector<int>> &key) { int n = key[0].size(); int m = key.size(); vector<vector<int>> temp(n, vector<int>(m,0)); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { temp[i][j] = key[m-j-1][i]; } } key = temp; } void print_v(){ for (vector<int> tv : v){ for (int i : tv){ cout << i << " "; } cout << "\n"; } cout << "--------------------\n"; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); print_v(); left_90_rotate(v); print_v(); rotate_90_right(v); print_v(); }
-
해결됨김영한의 실전 자바 - 중급 2편
[강의록 오타] 9. 컬렉션 프레임워크 - Map, Stack, Queue
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[강의록 오타]대상 강의록: 9. 컬렉션 프레임워크 - Map, Stack, Queue.pdf페이지: p.6 상단내용:(기존) Map의 값 목록을 중복을 허용한다.(수정) Map의 값 목록은 중복을 허용한다.영상 잘 보고 있습니다. 너무 재밌어요 영한님!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
19번 질문있습니다
#include <iostream>using namespace std;int main(){ int n; int a[200]; int i; int j; int cnt = 0; bool flag; cin >> n; for (i = 0;i < n;i++) { cin >> a[i]; } for (i = 0;i < n-1;i++) { flag = true; for (j = i + 1;j < n;j++) { if (a[i] < a[j]) { flag = false; break; } } if (flag == true) { cnt++; } } cout << cnt; return 0;}제가 짠 코드로 채점기 돌리니깐 5번에서 fail 뜨는데 어디서 오류가 났는지 모르겠습니다 ㅠ저는 인덱스 0부터 순회하였습니다!!
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
트리 - 목표문제 11725 메모리 초과
안녕하세요트리 목표 문제 11725 예제를 백준에서 돌렸을때 메모리 초과가 발생합니다. 혹시 메모리 초과가 나지 않게 푸는 방법은 없을까요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
6번 관련 채점오류입니다
#include <iostream>using namespace std;int main(){ char a[100]; int i; int j; int num = 0; int count = 0; cin >> a; for (i = 0; a[i] != '\0';i++) { if (a[i] >= '1' && a[i] <= '9') { num = 10*num + (a[i]-'0'); } } for (j = 1 ; j <= num;j++) { if (num % j == 0) { count = count + 1; } } cout << num << endl << count <<endl; return 0;}다음과 같은 채점 20점이 나오는데 무슨 오류인지 모르겠습니다 로직은 제대로 구현한것 같습니다
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
제가 작성한 코드에서 간단한 질문이 있습니다.
public List<String> solution(int n, String[] str) { List<String> answer = new ArrayList<>(); for (String s : str) { char[] c = s.toCharArray(); int lt = 0; int rt = c.length - 1; while(lt < rt) { char temp = c[lt]; c[lt] = c[rt]; c[rt] = temp; lt += 1; rt -= 1; } answer.add(new String(c)); } return answer; }제가 작성한 코드입니다. 1)강사님은String temp = String.valueOf(c);answer.add(temp);이런 식으로 String.valueOf()를 통해 char 배열을 String으로 변환하셨지만, 저는 그냥answer.add(new String(c));그냥 이렇게 String 생성자를 사용했습니다.정답 처리는 됐는데, 혹시 이런 식의 코드가 지금 문제 혹은 나중에 문제를 풀 때 안 좋은 점이 있을까요? 2)저는 습관적으로List<String> list = new ArrayList<>();이런 식으로 부모 타입으로 주로 선언하는데,혹시 ArrayList<String> list = new ArrayList<>();이런 식으로 구체적인 타입으로 선언해야만 문제를 푸는 경우도 나중에 나올까요?코딩 테스트에선 부모 타입보단 구체적인 타입으로 쓰는 습관을 가져야 하는지 궁금합니다. 강의 잘 듣고 있습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 시간초과 질문
안녕하세요, 선생님. 새해복 많이 받으시길 바랍니다. 3-K(#3179, 백조의 호수) 문제를 강의내용 기반으로 혼자 짜보았는데 2%채점 중에 항상 시간초과가 발생하여 질문 드립니다. 코드는 아래 링크와 같습니다.http://boj.kr/9a423cb3ee32415a8e66d7d1516881fe 기탐색한 큐를 재탐색하지 않도록 q.size가 끝날 때마다 q를 tempQ로 교체하도록 코드는 수정하였으나, 어디선가 불필요한 중복탐색이 발생하는 것으로 예상됩니다.다만, 저 혼자서는 해당 중복탐색 부분을 발견 못하여 도움을 요청 드립니다... 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 불! 문제 반례 질문
안녕하세요, 선생님. 새해복 많이 받으시길 바랍니다. #4179불! 문제에 대해, 아래 링크와 같이 코드를 짜봤습니다.(강의에서 설명해주신 반례(F가 없는 경우)를 처리하지 못하는 부분은 선생님 코드를 참고하여 수정을 해봤습니다.)http://boj.kr/a026e22915944cc9b8bfd1b8a9fd9905 지훈이에 대해 j_bfs 함수로 탈출가능한 경로를 탐색하여 j_bfs_visited에 거리값을 기록하고,불에 대해서도 f_bfs 함수로 별도로 경로를 탐색하여 f_bfs_visited에 거리값을 기록한 다음,마지막에 compare_bfs 함수에서 j_bfs_visited와 f_bfs_visited를 비교하는 조건을 추가하여, 탈출 가능한지 탐색하는 방식으로 코드를 짜보려 했습니다. 허나, 틀렸다고 결과(채점중11%에서 틀렸다고 판정됩니다.)가 나오네요... 나름대로 이것저것 경우를 생각하며 반례를 찾고 있는데 쉽지가 않아 도움을 요청 드립니다. 지훈이와 불에 대해 각각 BFS를 한 후, visited를 비교한다는 점에서 선생님 코드와 유사한 방식으로 풀릴 것이라 생각했는데, 미처 생각하지 못한 오류가 제 코드에 있는 것 같습니다. 혹시 제 코드에서 논리적으로 의심되는 바를 짚어주시면 감사드리겠습니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
동적계획법은 사용하는 문제
안녕하세요.해당 네트워크 선 자르기 문제는 dfs 를 사용해서도 풀 수 있는 거 같습니다.그래서 궁금한점이, 실제 코딩테스트를 볼때 어떤 문제 유형에 동적계획법을 적용하는게 좋은지 궁금합니다.그리고 이 문제처럼 dfs, 동적계획법 둘 다 적용해서 풀 수 있는 문제라면 어떤 방법을 적용하는게 좋을지도 궁금합니다.
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
2-6 get_linked_list_sum 형변환으로 풀었는데
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 2-6어떤 알고리즘을 학습하고 계신가요? linked_list여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분어느 부분에서 막히셨나요? 막힌건아니구..코드의 어떤 로직이 이해가 안 되시나요? 이해도되는데어떤 개념이 헷갈리시나요? 내 풀이는 정석이 아닌가싶어서 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요? 생각을 많이함에러가 발생했다면 어떤 에러인가요? 에러 아님현재 작성하신 코드를 공유해주세요def get_linked_list_sum(linked_list_1, linked_list_2): concat_value_1 = "" concat_value_2 = "" cur_1 = linked_list_1.head cur_2 = linked_list_2.head while cur_1 is not None: concat_value_1 += str(cur_1.data) cur_1 = cur_1.next while cur_2 is not None: concat_value_2 += str(cur_2.data) cur_2 = cur_2.next return int(concat_value_1) + int(concat_value_2)강사님처럼 10을 곱해주는게아니라str로 형변환해서 그냥 붙힌다음에다시 int로 파싱해서 리턴했는데...이건 너무 야매풀이일까요..ㅠ 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 선생님 다다음주 코테를 앞두고 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.강의 중 큰돌님께서 비트마스크가 가능한 수는 n=16 이하(?)정도로 설명하셨는데 다시 강의를 볼 시간이 부족하여 질문드립니다.또한 완전탐색이 가능한 시간복잡도는 1억 이하,1000만 이하(?)가 맞는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
while을 사용하여 반복문을 작성했는데 안되는 이유가 알고 싶습니다.
안녕하세요!강의에서 N과 N개의 자연수가 주어진다. 여기서 몇개의 숫자를 골라 합을 mod 11을 했을 때 나오는 가장 큰수를 구하라. 문제를 작성할 때 #include<bits/stdc++.h>using namespace std;int n, ret;vector<int> v;void go(int idx, int sum){ if(idx == n){ ret = max(ret, sum % 11); return; } go(idx + 1, sum); go(idx + 1, sum + v[idx]);}int main() { cin >> n; int num; while(n--){ cin >> num; v.push_back(num); } go(0, 0); cout << ret << "\n"; }이렇게 작성하면 오류가 발생하고 while(n--) 부분을 for(int i = 0; i < n; i++)로 작성하면 잘 실행이 되는데 이유가 뭔지 알 수 있을까요?
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
미리 풀어 봤는데, 이 코드는 그다지 좋은 코드는 아니려나요?
import java.util.*; public class Main { public void solution(String str) { String upper = str.toUpperCase(); for (int i = 0; i<str.length(); i++) { if (str.charAt(i) != upper.charAt(i)) { System.out.print(upper.charAt(i)); } else { System.out.print(Character.toLowerCase(str.charAt(i))); } } } public static void main(String[] args) { Main main = new Main(); Scanner sc = new Scanner(System.in); String str = sc.next(); main.solution(str); } }정답 처리는 됐습니다.저는 solution() 메서드의 리턴 타입을 void로 두고, 이 메서드 내부에서 한 글자씩 print()로 출력했습니다. 이런 접근은 안 좋으려나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-M 질문드립니다.
Q1. 이게 dp 인가요..? 아니면 중간에 넣어두신 구현 문제인가요? Q2. 시간복잡도 계산은 어떻게 하셨나요? 시험도중에 시간복잡도를 계산하기 위해서는 한칸에 존재할 수 있는 나무의 최대 개수를 추정해야한다고 생각이 드는데, 이를 어떻게 추정하셨는지 궁금합니다. 다른 분의 Q&A를 보니 8칸으로부터 나무가 추가될 수 있으니 최대 8개라고 하셨는데, 이전 년도부터 존재하던 나무는 고려하지 않는건가요? 제 이해로는 최대 8개라는건 이번 1년동안 추가될 수 있는 나무의 최대개수라고 생각이 듭니다. 저희는 1년~1000 년 까지 추가될 수 있는 나무의 개수를 추정해야하는 것 아닌가요? 제 코드는 다음과 같습니다!https://www.acmicpc.net/source/89268714저는 봄,여름을 springSum 라는 하나의 함수로 묶었고, 가을, 겨울을 fallWin 라는 하나의 함수로 묶었습니다. 이때 시간복잡도를 추정해보면 k * (springSum + fallWin) 이고, 세부적으로는springSum : n^2 * (한칸에 있는 나무 최대개수 + nlogn)fallWin : n^2 (번식할 나무 개수 * 8)라고 했을 때, 그 다음부터 사고가 꼬입니다.. 그래도 대략적으로 생각을 해볼때 ..한칸에 있는 나무 최대개수 : k년동안 8개의 주위 칸으로부터 나무를 받는다고 했을 때, 8*k 이고 k는 1~1000까지 이므로 log(8000)개 = 3log 8 * 1000 -> 보수적으로 1000개번식할 나무 개수 : 100개 라고 생각이 들어서 결과적으로 1억이 넘는다고 계산이 됩니다. 물론 문제 구성상, 나무가 나이가 들어가며 양분을 더 많이 필요로 하게 되므로 양분의 한계로 인해 개수가 어느정도 유지되는 것 같기도 하고, 나무 번식 주기가 5의 배수마다 한번씩 할 수 있으니 이또한 실제 고려한 횟수보다 훨씬 적을 것 같은데 정확하게 시험장에서 이 코드가 시간 제한을 통과한다고 확신을 못하겠습니다 ㅜㅜ... 어디가 틀린것인지, 알려주시면 감사하겠습니다 !!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
22번 문제는 C로 풀어주신 건가요 C++로 풀어주신 건가요?
22번 문제는 C로 풀어주신 건가요 C++로 풀어주신 건가요?vector를 써서 배열을 선언할 때, std를 사용하던데 C에도 사용이 되는 문법인건지, 아니면 C++에서도 cin 대신 scanf를 쓰는 것인지 궁금합니다!그리고 std::vector<int> a(n) 이렇게 소괄호를 썼는데, 아래 for문 전개에서는 a[i] 이렇게 대괄호를 쓰는 것은 배열이기 때문인걸까요?
-
미해결김영한의 실전 자바 - 중급 2편
UnitPrinter.printV2 와일드카드 작성 시
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]public static void printV2(Shuttle<? extends BioUnit> shuttle) { shuttle.showInfo(); } 이 부분에 와일드카드가 BioUnit 을 extends 해야 한다고 명시적으로 작성해 주고 있는데 Shuttle 클래스에서 이미 <T extends BioUnit> 을 하고 있기 때문에 와일드카드는 단순하게 ? 만 사용해도 괜찮은 걸까요?다른 개발자가 사용할 경우에 좀 더 명시적으로 확인시켜주기 위해 적은거라고 이해해도 되는 건지 궁금합니다. public static void printV2(Shuttle<?> shuttle) { shuttle.showInfo(); }이렇게 코드를 작성한 이후에 여러 테스트를 해봤는데 Shuttle 클래스를 만들때 <T extends BioUnit> 에 걸려서 Integer나 Object 등 다른 타입은 사용할 수 없더라구요.