묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
입출력 관련 질문있습니다.
지금까지 tc 여러 개 일때 출력 값들은 따로 저장해서 마지막에 한 번에 출력했었는데요.영상보고 이제야 눈치챘는데, 해보니깐 아래 둘다 맞더군요.이런 건 백준 말고도 다른 사이트도 똑같나요. 아니면 상이한가요?아래 1번 처럼해도 모두 안전한건가요. 1입출입출 2입입출출
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
최대값 지정후 Math.max()로 풀어도 될까요.
감사합니다. function solution(arr) { let answer = 0; let max = Number.MIN_SAFE_INTEGER; for (let i = 0; i < arr.length; i++) { if (arr[i] > max) answer++; max = Math.max(arr[i], max); } console.log(answer); return answer; }
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
minimum 을 지정한 뒤 푸는 방법은 어떤가요?
안녕하세요. minimum 을 지정한 뒤 푸는 방법은 어떤가요? 답을 나왔는데 반례가 있는지, 괜찮은지 궁금합니다.감사합니다. function solution(arr) { let answer = []; let min = Number.MIN_SAFE_INTEGER; for (let i = 0; i < arr.length; i++) { if (arr[i] > min) answer.push(arr[i]); min = arr[i]; } return answer; }
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 6. 쇠막대기 문제풀이(질문)
선생님 안녕하세요 !문제풀이 과정에서 제가 푼 방법과 조금 다른거 같아서 이렇게 코드 작성해도 괜찮을지질문 드립니다. 매일 빠른 답변 감사드립니다 ! <html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(s){ let answer = 0; let stack = []; for(let i=0;i<s.length;i++){ if(s[i] === "(") { stack.push('('); answer += 1; } else { if(s[i-1] === '(') { stack.pop(); answer -= 1; answer += stack.length } else { stack.pop(); } } } return answer; } let str = "(((()(()()))(())()))(()())"; console.log(solution(str)); </script> </body> </html>
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
연속부분수열 코드리뷰 부탁드립니다..
while 문만 써서 해결해보고 싶어서 아래와 같이 짜 봤는데, 어떤 경우는 정답으로, 어떤 경우는 오답으로 나옵니다..이 코드에 무슨 오류가 있는지 알고 싶은데 아무리 들여다봐도 어디가 문제인지 모르겠어서 강사님께 질문 드립니다ㅠimport java.util.Scanner; public class Main { public int solution(int n, int m, int[] arr){ int sum = 0; int cnt = 0; int p1 = 0; int p2 = 0; while(true){ if(p1 == n-1 && sum < m){ break; } else { if(sum < m){ sum += arr[p1++]; if(sum == m){ cnt++; sum -= arr[p2++]; } }else if(sum > m){ sum -= arr[p2++]; if(sum == m){ cnt++; sum -= arr[p2++]; } } } } return cnt; } public static void main(String[] args){ Main t = new Main(); Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++){ arr[i] = in.nextInt(); } in.close(); System.out.print(t.solution(n, m, arr)); } }
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
시간복잡도 질문
일반적으로 알려진 시간복잡도에 따르면 input 값이 200000 정도일 경우 O(nlogn) ~ O(n) 사이의 시간복잡도에 해당한다고 생각하였는데, 이중 for문을 사용해도 시간 초과가 일어나지 않는 원인이 무엇인지 궁금합니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
코테 질문이 있습니다.
안녕하세요. 저는 5년차 개발자이구요. 경력직으로 이직할 생각을 하고 있는데요. 본래는 자바로 코테를 준비하다가 강의 듣고나서는 파이썬으로 하고 있습니다. 물론 자바에 비해서 코드 구현하기가 많이 쉽습니다. 그런데 막상 코테를 하게 되면 언어 상관없이 자유롭게 쓰는 회사가 있는 반면에 몇몇 회사는 '자바'로만 코테로 보겠끔 되어 있는곳도 의외로 되더라구요. 이런 경우에는 자바 위주로 준비를 하는게 맞는건지 아니면 파이썬 + 자바 둘다 해야하는지 궁금합니다..ㅜ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1주차 문제들의 시간 복잡도 확인
1주차 문제들의 큰돌님 코드의 시간 복잡도 계산을 확인받고자 질문 올립니다. A순열로 풀었을 때for 문 -> next_permutation 그리고, 내부에 for문 -> for문으로 출력 순으로 진행했는데, next_permutation 내부에 for문이 있으므로 O(n^2) 인가요?조합으로 풀었을 때solve()에서 for문 중첩이므로 O(n^2)인가요?B: O(n)C: O(n)첫 번째 시작을 중첩 for문으로 시작했지만 바깥 for문은 i < 3까지 진행하므로 3 * n으로 하여 O(n)이고, 그 뒤에 for문이 100까지 진행되므로 3n + 100 으로 O(n)이라 생각했습니다.D: O(n)reverse를 하는데 처음부터 끝까지 하므로 O(n)이고 그 이후에 if문이 존재하므로 O(n)으로 생각했습니다.E: O(n)F: O(n)G: O(n)H: O(n)I: O(n)J: 패션왕 신해빈 문제인데, while문과 그 안에 for문이 있기 때문에 O(n^2)으로 생각해야하나요? 아니면 테스트케이스로 주어진 while문 내부만 고려해서 O(n)으로 생각해야 하나요?K: O(n)L: O(n^2)M: O(n^2)N: O(long N)O: 아직 문제 이해를 잘 못해서 더 고민해보겠습니다..
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이 풀이도 가능한지 궁금합니다 !
function solution(M, arr) { const N = arr.length; let answer = Number.MIN_SAFE_INTEGER; for (let i = 0; i < N; i++) { let pp = []; // 상품 가격 let pd = 0; // 배송비 let cnt = 1; pp.push(arr[i][0]); pd += arr[i][1]; for (let j = i + 1; j < N; j++) { pp.push(arr[j][0]); pd += arr[j][1]; cnt++; const maxPrice = Math.max(...pp); // 총 가격 계산 const totalProductPrice = pp.reduce((total, val) => { if (val === maxPrice) total += val / 2; else total += val; return total; }, 0); const totalPrice = totalProductPrice + pd; if (totalPrice > M) break; answer = Math.max(answer, cnt); } } return answer; } 현재 예제에서는 답이 나오는데 괜찮은지 문의드립니다 !
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
슬라이딩 윈도우와 투 포인터 알고리즘 차이에 대해 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님 문제에서 슬라이딩 윈도우를 쓸지 투포인터를 쓸지에 대한 차이가 무엇인가요?? 두 알고리즘 모두 문제에 '연속된'으로되어있으면 가능하지 않나요???
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1 - k 반례가 무엇인지 모르겠습니다. (JAVA)
안녕하세요. 큰돌님 강의 잘 듣고있습니다.다름이 아니라 아래 코드에서 어떠한 이유로 통과가 안되는지 이유를 모르겠습니다. 감사합니다.public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] cnt = new int[26]; br.readLine().chars().forEach(i -> cnt[i - 'A']++); boolean checkOdd = false; char oddChar = '0'; StringBuilder sb = new StringBuilder(); for (int i = cnt.length - 1; i >= 0; i--) { if (cnt[i] == 0) continue; if (checkOdd && (cnt[i] & 1) == 1) { sb.setLength(0); // sb.append("I'm Sorry Hansoo"); break; } if ((cnt[i] & 1) == 1) { oddChar = (char) (i + 'A'); checkOdd = true; cnt[i]--; } for (int j = 0; j < cnt[i] / 2; j++) { sb.append((char) (i + 'A')); sb.insert(0, (char) (i + 'A')); } } if (Character.isLetter(oddChar)) { sb.insert(sb.length() / 2, oddChar); } System.out.print(sb.toString()); }
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
70번 이해가 안돼는게 있습니다.
안녕하세요 선생님 혼자서 해 볼려고 해도 구현이 하기가 어려워 선생님의 코드를 보면서 원리를 이해하고 있는 학생입니다.선생님이 만드신 코드중에 for (i = 0;i < map[x].size(); i++) { if (ch[map[x][i]] == 0) { ch[map[x][i]] = 1; Q.push(map[x][i]); dis[map[x][i]] = dis[x] + 1; } i = 0;i < map[x].size(); i++이 부분 부터 이해가 잘 되질 않습니다. x가 1이면 map[1]의 개수는 2가 되고 map[1][0], map[1][1]로 돼야 할 텐데 어떻게 ch[map[1][3]=3] = 1으로 가는지 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 질문있습니다.!
처음 오리의 위치를 딱 정해서 오리의 처음 위치 부터 계속 탐색 시켰습니다.이러니 시간 초과가 나오게 되었습니다.왜 시간 초과가 나오는지 궁금합니다.https://www.acmicpc.net/source/61456336 while (true){ ans++; v.clear(); find_water(); ice_break(); if (find_duck()) break; }이 부분에서 find_water가 O(1500*1500) 이정도 시간이 걸린다고 생각합니다.호수의 크기가 1500x1500이고 오리가 (0,0), (1500,1500)에 있을때, 대충 bfs로 정점이 1500개, 간선이 4개니까, O(1500 + 4)정도 걸린다고 생각합니다.O(1500*1500) * O(1500)이라 시간 초과가 나는것이라고 생각하는데, 이렇게 계산하는것이 맞는지 궁금합니다.영상에서 나온 방법은 왜 시간초과가 안 나오는지도 궁금합니다... 문제 해설과 똑같은 로직으로 코드를 짜보았습니다.https://www.acmicpc.net/source/61457241하지만, 메모리 초과가 나와 질문합니다..어디가 메모리가 초과되는지 알고 싶습니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
무조건 mid-=a[i]를 하는데 mid==temp인 순간이 있나요?
없지않나요? if mid!=temp문의 cnt는 무조건++되는걸까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
split함수 작성 시 push_back 부분 에 관하여
안녕하세요.강의를 들으면서 실습을 하면서 하는 중인 학생입니다.예제 문장이 아닌, "hello world!" 로 했을 경우, hello hello가 두 번 나와서 강의 교안과 비교해보니 강의 7:18초 쯤 12번째 줄이ret.push_back(token)부분이 알고리즘 교안에는 ret.push_back(input)으로 나와 있네요..ㅠ 확인부탁드립니다..
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다!
강사님, 안녕하세요.문제를 미리보고 강의를 들었는데, 큰 개념은 비슷하지만 코드의 시간복잡도, 공간복잡도가 다를 수 있을 것 같아서 코드리뷰를 요청드립니다. for문을 통해 슬라이딩 윈도우를 하면서, 문자열을 쪼개고 아나그램을 비교할 때도 매번 Map을 생성하는 부분에서 비효율적인 부분이 있을 것 같은데 한번 확인부탁드리겠습니다. { function isAnagram(s: string, t: string) { const hash = new Map(); for (let val of t) { if (!hash.has(val)) hash.set(val, 1); else hash.set(val, hash.get(val) + 1); } for (let val of s) { if (!hash.has(val) || hash.get(val) === 0) return false; else hash.set(val, hash.get(val) - 1); } return true; } function solution(s: string, t: string) { let answer = 0; let n = t.length; let substr = s.slice(0, n); if (isAnagram(substr, t)) answer++; for (let i = n; i < s.length; i++) { substr = substr.slice(1) + s[i]; if (isAnagram(substr, t)) answer++; } return answer; } const s1 = "bacaAacba"; const s2 = "abc"; console.log(solution(s1, s2)); }
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 괜찮을까요?
function solution (arr){ let answer = []; let count = 1; for(i=0; i<arr.length; i++) { let max = Math.max(...arr); for(j=0; j<arr.length; j++) { if(arr[j] === max && arr[j] !== 0){ answer[j] = count; arr[j] = 0; if(Math.max(...arr) !== max) count++; } } } return answer;}
-
미해결자바 코딩테스트 - it 대기업 유제
풀이질문입니다.
안녕하세요. 해시를 이용한 풀이 잘 보았습니다!!.저는 혹시 리스트를 이용해서 풀어보았는데 괜찮은 풀이 방식일까요?? public static int[] solution(int[] nums){ int n = nums.length; int[] answer = new int[n / 2]; ArrayList<Integer> ans = new ArrayList<>(); for(int x : nums){ ans.add(x); } Collections.sort(ans); for(int x : nums){ for(int i=0;i<ans.size();i++){ if(x*2 == ans.get(i)){ ans.remove(i); break; } } } for(int i=0;i<n/2;i++){ answer[i] = ans.get(i); } return answer; }
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
첫번째 값으로 받는 길이값과 두번째 값으로 받는 값의 길이가 다를경우의 체크는 필요없나요?
안녕하세요 선생님해설 해주시기 전에 다음과 같이 구현하고 해설을 들었는데요, 첫번째 값의 길이값을 체크하는 로직이 없어도 되는지요? public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); String value = sc.next(); char[] valueArray = value.toCharArray(); int answer = 0; if (valueArray.length == num) { for(char charValue : valueArray) { int numValue = charValue - '0'; answer += numValue; } } System.out.println(answer);}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 질문입니다
안녕하세요 선생님,답안을 보며 제가 작성했던 코드의 로직만 변경해보는데 아무리 해도 통과되질 않았습니다. 설마 하고 child++ 부분을 건드렸는데 통과되길래 이번엔 답안의 child++부분만 제가 작성했던 대로 바꿨더니 통과하지 못했습니다. child == 0을 체크하는 것과 adj[here].size() == 0을 체크하는 것은 같은 동작을 해야할 것으로 보이는데 차이가 발생하는 것이 이해가 가지 않아 질문을 드립니다. 왜 size() == 0 방식은 틀리는 것인가요?http://boj.kr/754400230cc34e12826f100050bfe9eb