묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
최대 매출 문제
import java.util.Scanner; public class Main { public int solution(int n, int m, int[] arr){ int answer = 0, sum = 0; for(int i=0;i<m;i++){ sum += arr[i]; } for(int i=0;i<n-m;i++){ answer = Math.max(answer, sum); sum = sum - arr[i] + arr[i+m]; } //answer = Math.max(answer, sum); return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int m = kb.nextInt(); int[] arr = new int[n]; for(int i=0;i<n;i++) arr[i] = kb.nextInt(); System.out.println(T.solution(n, m, arr)); } }해당 코드가 왜 정답이 되는지 모르겠습니다.위 코드처럼 작성하면 for문의 제일 마지막번째에 sum과 answer를 비교하지 않고 answer를 리턴하게 되는건데 그럼 오답이지 않나요?10 31 2 3 4 5 6 7 8 9 10이렇게 마지막 연속된 K일에서 최댓값으로 주어진다면 값이 제대로 안 나오는데 왜 정답이 되는지 궁금합니다.
-
미해결김영한의 실전 자바 - 중급 2편
해당 코드는 삽입정렬인가요?
package collection.compare; import java.util.Arrays; import java.util.Comparator; public class SortMain2 { public static void main(String[] args) { Integer[] array = {3, 2, 1}; System.out.println(Arrays.toString(array)); System.out.println("Comparator 비교"); Arrays.sort(array, new AscComparator()); System.out.println("AscComparator: " + Arrays.toString(array)); } static class AscComparator implements Comparator<Integer> { @Override public int compare(Integer o1, Integer o2) { System.out.println("o1=" + o1 + " o2=" + o2); return (o1 < o2) ? -1 : ((o1 == o2) ? 0 : 1) ; } } }이 코드는 삽입정렬이 사용되어 배열의 첫 번째 요소가 정렬된 것으로 간주하고 시작하는게 맞을까요...?o1=2 o2=3o1=1 o2=2이렇게 두 단계만 거치는 이유와 o1, o2를 잡는 기준을 잘 모르겠습니다...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
백준9996번 질문드립니다.
#include <bits/stdc++.h> using namespace std; int num; string pattern; string fileName; int asteridIndex=0; int isValid; vector<char> patternFront; vector<char> patternBack; vector<string> output; int checkValid(string fileName){ string fileNameReverse; fileNameReverse=fileName; reverse(fileNameReverse.begin(),fileNameReverse.end()); for(size_t i = 0; i<patternFront.size(); i++){ if(fileName[i]==patternFront[i])continue; else{return 0;} } for(size_t i = 0; i<patternBack.size(); i++){ if(fileNameReverse[i]==patternBack[i])continue; else{return 0;} } return 1; } int main() { cin>>num; cin>>pattern; for(size_t i=0; i<pattern.size(); i++){ if(pattern[i]=='*'){asteridIndex=i; continue; // 이번껀 패턴으로 저장 안하고, 다음 문자로 넘어가기 위해 } if(asteridIndex==0){ patternFront.push_back(pattern[i]); }else if(asteridIndex!=0){ patternBack.insert(patternBack.begin(), pattern[i]); } } for(int i = 0; i<num; i++){ cin>>fileName; isValid=checkValid(fileName); if(isValid==0){output.push_back("NE");} else if(isValid==1){output.push_back("DA");} } for(auto o:output){cout<<o<<"\n";} return 0; } 입력 -> 출력은 알맞게 되는데 백준에선 계속 틀렸습니다가 나옵니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
저.. 시간복잡도 관련 질문입니다.(로직 거의 비슷한 거 같은데, 시간초과가 나서요)
안녕하세요, 강의를 듣고 계신 여러분!여러분의 학습을 돕기 위해 질문 안내를 드리고자 합니다. 1. chatGPT를 이용해보기단순한 의문은 chatGPT를 이용해도 해답을 찾을 수 있는 경우가 종종 있습니다! 2. 강의의 어떤 부분에 대한 질문이고, 어떤 부분이 궁금한지 명확히 알려주세요!강의의 어느 파트에서 의문을 느끼고, 어떤 부분이 궁금한지를 명확히 제시해 주시면 답변에 도움이 됩니다!자신은 어떻게 이해했는지 또한 적어주면 좋습니다! 강의 중 브루트포스 알고리즘 마지막백준 1342번 행운의 문자열 문제입니다.순열로 접근한 처음 코드 시간 초과 후선생님 강의 설명을 들으면서 백트래킹으로 수정했는데요,근데,, 로직은 거의 차이가 없고다만 초기화나 선언 등 순서의 차이 같은데,저는 시간 초과를 해결 하지 못했고,선생님 코드를 복붙,,, 했더니 성공하더라구요 😓그래서 어떤 차이 분석을 할 수 있을지 질문 남깁니다.코드는 아래와 같고 풀이2번을 참고하였습니다.(시간초과 코드입니다)import sys input = sys.stdin.readline s = input() choice = [] dic = dict() chars = set() cnt = 0 for l in s: chars.add(l) if l not in dic: dic[l] = 0 dic[l] += 1 def dfs(level): global cnt, choice, dic if level == len(s): cnt += 1 return for l in chars: if dic[l] == 0: continue if (not choice) or (choice[-1] != l): dic[l] -= 1 choice.append(l) dfs(level + 1) dic[l] += 1 choice.pop() dfs(0) print(cnt)
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
수업 자료 솔루션 코드와 강의 중의 코드를 일치시켜주세요
저는 강의를 한번 다듣고나서 강의 도중 강사님께서 코드 작성하신것을 바탕으로 백준 문제에 대한 풀이를 수행하고 있습니다.그러다 보니 문제 풀이가 기억이 안나거나 헷갈리는 부분이 있을때 수업 자료의 솔루션 코드를 참고하고자 하는데, 그럴때마다 수업 도중 본 코드와 상이하여 당황스럽습니다.강의 중 짠 코드를 바탕으로 수업자료 끝의 솔루션 코드를 작성해주시면 더 도움이 될것 같습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-V 질문있습니다
http://boj.kr/7eea708ea65645e784b2eaab4ec27b88 다음과 같은 방법으로 시간을 0에서 부터 시작하여 K시간까지 하는 방법으로 코드를 작성하였는데 왜 틀린 답이라고 나올까요?? 만약 저와 같은 방법으로 하려면 어떤 식으로 코드를 수정해야 될까요?아 그리고 -1e6 == -1000000이라고 생각하면 될까요?
-
해결됨김영한의 실전 자바 - 중급 2편
교안에 잘못된 부분이 있는 것 같습니다
컬렉션 프레임워크 / Collections 정렬 관련 메서드 에서reverse 메소드에 대한 설명이 "정렬 기준의 반대"로 컬렉션을 정렬한다고 되어있는데단순히 reverse메소드는 현재 컬렉션이 정렬되어 있는 것을 뒤집어 주는 메소드 인 것 같습니다
-
미해결세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
파일을 찾을 수 없다 뜹니다..! (세팅 관련 질문)
안녕하세요, 강의를 듣고 계신 여러분!여러분의 학습을 돕기 위해 질문 안내를 드리고자 합니다. 1. chatGPT를 이용해보기단순한 의문은 chatGPT를 이용해도 해답을 찾을 수 있는 경우가 종종 있습니다! 2. 강의의 어떤 부분에 대한 질문이고, 어떤 부분이 궁금한지 명확히 알려주세요!강의의 어느 파트에서 의문을 느끼고, 어떤 부분이 궁금한지를 명확히 제시해 주시면 답변에 도움이 됩니다!자신은 어떻게 이해했는지 또한 적어주면 좋습니다! ash: python: command not found[Finished in 16ms with exit code 127][shell_cmd: python -u "/Users/sindonghui/Desktop/test.py" < input.txt][dir: /Users/sindonghui/Desktop][path: /Library/Frameworks/Python.framework/Versions/3.12/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin] 밑에 이렇게 떠요 ex) 섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의에서 DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해했습니다. 그러면 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요? 어느 파트섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의자신은 어떻게 이해했는지DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해어떤 부분이 궁금한지 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요?
-
미해결김영한의 실전 자바 - 중급 2편
remove 메소드 관련 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]데이터를 삭제하는 기능에서 removeNode를 null값으로 처리하는 이유가 있을까요?removeNode를 더 이상 사용되지 않는 것 같은데, 해당 노드의 item과 next를 null값으로 처리해야만 GC 대상이 되는건가요? null값으로 명시하지 않아도 될 것 같아 질문드립니다. // 추가 코드 public Object remove(int index) { Node removeNode = getNode(index); Object removedItem = removeNode.item; if (index == 0) { first = removeNode.next; } else { Node prev = getNode(index - 1); prev.next = removeNode.next; } removeNode.item = null; removeNode.next = null; size--; return removedItem; }
-
미해결김영한의 실전 자바 - 중급 2편
문제 4번 관련 질문입니다.
public class ItemPriceTest { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("사과", 500); map.put("바나나", 500); map.put("망고", 1000); map.put("딸기", 1000); // 코드 작성 ArrayList<String> list = new ArrayList<>(); for (Map.Entry<String, Integer> entry : map.entrySet()) { if (entry.getValue().equals(1000)) { list.add(entry.getKey()); } } System.out.println(list); } } 여기서 entry.getValue() 의 비교를 == 으로 바꿔도 돌아가는데 상관없을까요? 객체의 경우 == 이냐, equals냐에 따라 동일성, 동등성 비교로 나뉘는거같은데 이와같이 값 비교 할 땐 둘 다 사용할 수 있는걸까요? == 을 사용해도 망고, 딸기가 출력되어 여쭤봅니다 [질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결Do it! 알고리즘 코딩테스트 with Python
나머지 합 구하기 핵심 아이디어 문의
안녕하세요. 나머지 합 구하기 핵심 아이디어 중 첫 번째 (A+B)%C는 ((A%C) + (B%C)) % C와 같다. 는 것은 본 문제를 푸는 데에는 직접적 관련이 없는 것 같은데 어떻게 관련이 되어 있는지 궁금합니다. 문제가 연속된 부분의 합의 나머지를 구하는 것인데,(A[i+1] + ... + A[j])%M = (S[j] - S[i])%M이 되고, 나머지 연산이 linear 연산이기 때문에(S[j] - S[i])%M = 0이라면S[j]%M = S[i]%M 이라고 할 수 있을 것 같아서요. 이 경우에 핵심 아이디어 2번째, 3번째로도 문제 풀이가 가능한 것 같은데, 핵심 아이디어 1번째는 어떤 역할을 하는지 궁금합니다. 감사합니다.이 되어
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 질문 드립니다 memset()
큰돌님 안녕하세요. 오늘은 교안에 헷갈리는 부분을 들고 왔습니다. memset() 함수중에, memset은 -1, 0, 혹은 char?까지 된다는 말씀일까요 안된다는 말씀일까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-F질문있습니다
http://boj.kr/38e288735ce042b08b79f4830cc93119 결국 괄호 묶기는 3숫자 중에 연산 앞으로 2개 묶나 뒤로 2개묶나를 비교해서 더 큰연산을 가져오는 방식이라 생각해서 이렇게 진행했는데 틀렷다고 나옵니다. 어떤 부분에서 논리가 틀렸는지 궁금합니다
-
미해결김영한의 실전 자바 - 중급 2편
collection 디렉토리 안에 map 포함
collection 인터페이스에 map 인터페이스가 속하지 않는다고 말씀해주셨는데 디렉토리를 collection에 만드신 이유가 있을까요? 검색해보니 Map을 컬렉션이라고 보기도 하지만 자바에선 컬렉션에 해당하지 않는다고 애매하게 나오네요...
-
미해결김영한의 실전 자바 - 중급 2편
강의 질문
Regular languages: deterministic and non-deterministic finite automata, regular expressions. Context-free languages: context-free grammars, push-down automata. Turing machines, the Chomsky hierarchy, and the Church-Turing thesis. Introduction to Complexity Theory and NP-Completeness. 안녕하세요 선생님. 항상 강의 잘 듣고 있습니다. 혹시나 이거를 다루어주시는 강의가 혹시 있을까요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
5번 정다면체 - 특정 길이의 리스트 선언 질문입니다.
cnt=[0]*(x+y+3) 에서 +3을 해주는 이유가 무엇인지 궁금합니다. x+y가 나올 수 있는 최대값이니, cnt = [0]*(x+y)만해도 되는 것 아닌가 했는데, list index out of range 라는 오류 메세지가 뜹니다. ㅠㅠ
-
미해결김영한의 실전 자바 - 중급 2편
매개변수 명명 관련 질문입니다.
매개변수 이름을 element와 value로 구분하시는 이유가 있을까요? public interface Myset<E> { boolean add(E element); boolean remove(E value); boolean contains(E value); }
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
최적화 1번 문제에서 단맛과 짠맛의 곱과 합이 거꾸로 설정된것 같아요.
아무리 코드를 봐도 잘못된게 없어서 백준 사이트 확인해보니 단맛 입력인 A 끼리는 곱하고 짠맛인 B 끼리는 더해야 해당 입력에 대한 올바른 출력값 (문제에서는 1) 이 나옵니다. 그냥 recur(idx+1, dan+ingre[idx][1], zzan*ingre[idx][0], use+1) 이렇게 인덱싱만 바꿨습니다. 아니면 제가 혹시 문제를 잘못 이해한걸까요..?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 질문 있습니다
http://boj.kr/6fddcaf0cc7c429f979e53823889d3bd 저는 이렇게 ret 을 0으로 두고 풀었는데요. 만약 ret을 1로 두고 푼다면 비에 전체가 잠기는 경우에는 안전영역이 0일텐데 이경우에 어긋나서 틀려야 되는거 아닌가요?예를 들면 2*2로50 5050 50의 높이로 구성된 지역에 비가 100씩 와버리게 되면 안전영역은 0개가 아닌가요? 그래서 ret은 1이 되면 안된다고 생각하는데 왜 맞게끔 채점이 되는건지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 수정 제안 드립니다.
큰돌님 안녕하세요?해당 강의의 아래 질문과 같이 combi() 함수 구현 중 값에 의한 호출 / 참조에 의한 호출을 잘못해서 시간 초과가 발생했습니다. // 해당 질문 링크https://www.inflearn.com/course/lecture?courseSlug=10%EC%A3%BC%EC%99%84%EC%84%B1-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%81%B0%EB%8F%8C&unitId=228311&tab=community&q=1286398&category=questionDetail 저도 combi 함수의 파라미터인 vector<int>를 값에 의한 호출로 써서 시간 초과가 났는데요, 값에 의한 호출을 사용한 이유 중 하나는 교안에 값에 의한 호출의 combi 예제가 있고 참조에 의한 호출 combi 두 가지 예제가 있어서 값에 의한 호출 예제를 사용했습니다. vector<int>의 경우 무조건(?) 참조에 의한 호출이 더 좋다면, (제가 이해한게 맞다면?)(최신 교안 150p) 교안의 아래 예시도 참조에 의한 호출로 바꾸면 어떨까요?(최신 교안 기준 165p)