묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
2개의 배열 말고 2차원 배열 사용
안녕하세요. 선생님 배열 2개 말고 2차원 배열로 풀었는데 괜찮나요?? 그리고 강의에서 문제들 입력받으실 때 왜 static으로 받지 않고 메인 메서드에서 받아서, DFS의 파라미터로 계속 주고받으시는지 궁금합니다. import java.util.Scanner; public class INF0803 { static int[][] problems; static int problemsCount; static int limitTime; static int maxScore = Integer.MIN_VALUE; public static void main(String[] args) { Scanner sc = new Scanner(System.in); problemsCount = sc.nextInt(); limitTime = sc.nextInt(); problems = new int[problemsCount][2]; for (int i = 0; i < problemsCount; i++) { for (int j = 0; j < 2; j++) { problems[i][j] = sc.nextInt(); } } DFS(0, 0, 0); System.out.println(maxScore); } static void DFS(int index, int currentScore, int currentTime) { if (currentTime > limitTime) { return; } if (index == problemsCount) { maxScore = Math.max(maxScore, currentScore); return; } DFS(index + 1, currentScore + problems[index][0], currentTime + problems[index][1]); DFS(index + 1, currentScore, currentTime); } }
-
해결됨김영한의 실전 자바 - 중급 2편
연결리스트 삭제 중 시간 복잡도 계산
public E remove(int index) { Node<E> removeNode = getNode(index); E removedItem = removeNode.item; if (index == 0) { head = removeNode.next; } else { Node<E> prev = getNode(index - 1); prev.next = removeNode.next; } removeNode.item = null; removeNode.next = null; size--; return removedItem; } private Node<E> getNode(int index) { Node<E> curr = head; for (int i = 0; i < index; i++) { curr = curr.next; } return curr; }MyLinkedList 클래스에 정의된 메서드 중 일부입니다. 링크드리스트의 경우 맨 앞 노드를 삭제하는 경우 참조의 조정만으로 삭제할 수 있어 O(1)이 소요된다고 배웠습니다. 연결리스트 내부의 필드로 가지고 있는 first를 활용해 바로 참조하지 않고 getNode()를 사용하면 메서드가 갖는 시간 복잡도를 따르지 않나요? getNode()는 평균적으로 O(n)이 걸리는 메서드라 생각해서 이 메서드가 사용되는 remove()의 경우 마찬가지로 O(n)인지, 어차피 getNode()를 사용해도 인덱스 1이니 O(1)로 간주하는지 궁금합니다.
-
미해결카카오 코테 6주 합격! 실전 파이썬 코딩테스트
1강 연습문제 복습문제1 문제 오류
문제 설명알파벳으로 이루어진 문자열 하나를 입력받아, "길이가 5 이상인 경우에만" 문자열 전체를 대문자로 변환하여 반환하는 함수를 정의하시오.길이가 5 이하라면 '길이가 5 이하입니다' 메시지를 반환합니다.예시입력: 'abc'출력: '길이가 5 이하입니다'입력: 'abcde'출력: 'ABCDE' 5이상과 5이하는 길이가 5인경우 이상,이하 모두 포함되는데길이가 5 이하라면 '길이가 5 이하입니다' 메시지를 반환합니다. -> 5 미만으로 문제 수정되야 할 것 같아요
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.
안녕하세요 세션1의 1.k번째 약수 수업을 듣고 vs에서도 잘 도는거 확인하고 파이썬 에서도 정상 수행되는것 확인하고 AA.py 파일을 복사해서 채점을 진행하면 아래 캡처 이미지처럼 오류가 발생합니다. 해결 방법 좀 알려주세요. 채점 진행 시 오류가 발생합니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문제집 실패시 입력값
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 문제집에서 런타임 오류시에는 입력값을 안 보여주는데 보여주면 좋겠습니다!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
안녕하세요. 선생님(54번 코드 관련 문의)
선생님 알고리즘 수업 들으면서 굉장히 도움 많이 받고 있습니다.그런데 여기 54번 문제풀이에서 scanf("%s", &a); 라고 작성하셨는데, 정확히는 scanf("%s", a); 가 맞는 것 같습니다. 물론 &a 와 그냥 a 둘다 결국에는 첫번째 배열 위치를 가리키지만, &a는 char (*)[50] 이라는 배열 포인터이라서 실제로 scanf인자가 기대하는 char * 타입이 아닙니다. 그러므로 a (char *) 로 쓰는 것이 적절해 보입니다. 정말 사소한 것이기는 한데 혹시나 다른 수강생 분들이 오해할 수 있다고 보여서 이렇게 말씀드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-O 17406번 배열 돌리기 질문 있습니다.
http://boj.kr/3457690bac064f1ea89a9a0340d9aa2f제가 한 방식은 순열로 다 저장한 후에 저장한 값 중에서 제일 작은 값을 저장하는 방식을 했습니다.분명 필요한 내용들은 다 했다고 생각했는데, 디버깅을 해도 문제점을 잘 모르겠습니다..
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-A 2분대 설명에 대해 질문 있습니다.
안녕하세요,2분대에서,a->b->c 든, a->c->b 든 순서는 상관 없이 둘 중 최적을 구하고 d로 간다고 말씀하신걸로 이해했습니다.그런데, a->b->c 인지, a->c->b인지 실제로 중요하고, 둘 다 탐색 해야하는 것 아닌가요..?a->b->c 인 경우와 a->c->b인 경우 모두 tsp() 함수 호출 시점에 argument로 전달되는 visited 값은 같겠지만, here 값이 달라지는데.. 오히려 반대로, 코드의 흐름상 결과적으로 일어나는 일은:tsp(c, {a, b, c}) 에서 tsp(d, {a, b, c, d}) + dist[c][d] tsp(b, {a, c, b}) 에서 tsp(d, {a, b, c, d}) + dist[b][d] 위 1번과 2번 사이의 비교 아닌가요..?이 경우 분명히 순서가 중요한 것 같아서 헷갈립니다! ㅎㅎ 좋은 강의 항상 잘 듣고 있습니다.감사합니다 🙂
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
투포인터 25:15 질문
투포인터 강의 25:15분 부터 나오는 설명에 대해 질문이 있습니다.0이 3개가 있는데0 + 0 이 왜 6.5가 되나요??그리고 6.5 + 0을 하는데6.5가 어디서 나오는지 이해가 안되었습니다.짜투리가 0이 3개면 그냥 0 아닌가요??
-
미해결해외 빅테크 코딩 인터뷰: LeetCode 포기자의 합격 공부법
조금만 더 고민하면 풀수 있을거 같을때
최대 10분 고민해보고 발상 안되면 넘어가서 발상할 수 있는 방법을 공부하라고 했는데, 막상하다보면 '아 이거 조금만 더 고민하면 해볼 수 있겠다' 란 마음이 들면서 그때부터 이리저리 시도해보고 코드 짜보고 그렇거든요? 이렇게 하다보면 한문제당 시간이 오래 걸리기도 하고요. 못풀때도 있고요. 이런경우 조언 부탁드려요.
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
안녕하세요, print 방식에 대해 문의드립니다.
import sys my_input = sys.stdin.readline N = int(my_input()) [print(sum(list(map(int, my_input().split())))) for _ in range(N)]와 같이 리스트 컴프리헨션 내부에서 바로 print 되도록 코드를 작성했는데,일단 백준 기준으로는 통과가 됐지만 위와 같이 한줄 입력 시 바로 한줄이 출력이 되고 있어서요혹시 나중에 이런식으로 작성할 때 문제가 되는 경우가 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-o 모듈러 연산 질문
"모듈러 연산은 마지막에 한 번만 수행하는 것과 중간중간 수행하는 것이 결과적으로 동일하다."라는 설명은, 아래 모듈러 연산의 성질을 이용하여 a를 cnt, b를 1로 가정했을 때를 의미하는 것인가요?1. [(a mod n)*(b mod n)] mod n = (a*b) mod n"덧셈과 곱셈으로 이루어진 연산에서 cnt %= n을 수행하면 된다" 라는 설명이 다소 헷갈려 질문드립니다.
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
다음 알고리즘의 경우 괜찮은 접근인지 궁금해요
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 1- 10어떤 알고리즘을 학습하고 계신가요? 1 - 10 2. 궁금한 부분def find_not_repeating_first_character(string): occurrence_array = find_alphabet_occurrence_array(string) for char in string: if occurrence_array[ord(char) - ord('a')] == 1: return char return "_" def find_alphabet_occurrence_array(string): alphabet_occurrence_array = [0] * 26 for char in string: index = ord(char) - ord('a') alphabet_occurrence_array[index] += 1 return alphabet_occurrence_array딩코딩코 선생님의 풀이와 다르게 반복된 값이 들어 있는 array에서 string의 element를 순회하면서 index의 빈도수를 조회하고 1이면 return 하도록 했는데 괜찮은 접근일까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 4949 문제 해석 질문있습니다.
http://boj.kr/1ceabe24da3440d0b9c019e393febde0위는 (. [ 사이의 공백을 처리하려는 코드입니다.(틀렸습니다 가 뜬 코드입니다. 공백을 처리하는 부분을 지우고 나니 맞았습니다 가 떳었습니다.)제가 공백을 처리하는 것을 dq로 관리했던 이유는 문제에서 '짝을 이루는 두 괄호가 있을 때, 그 사이에 있는 문자열도 균형이 잡혀야 한다.' 라는 조건 때문에 저는 [ first ] 가 입력을 주어졌었을 때 [first ] 이거나 [ first] 이런식의 반례가 있다고 생각해 공백도 처리를 하였는데 정답 코드를 보니 공백을 처리하지 않는거같습니다.저는 문제를 읽고 공백을 처리해야한다고 이해를 했는데 문제에서 어떤 조건 때문에 공백을 처리해도 되지 않는지 이해가 잘 가지 않습니다.또한 공백을 처리하지 않아도 된다는 힌트를 어떻게 얻는지 궁금합니다. 다른 문제에서도요..감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-V 누적합 질문
안녕하세요. 선생님. 문제는 다 이해가 됐는데 코드 시간때문에 질문 올립니다. 올릴때는 들여쓰기가 된줄 알았는데, 올리고 나서 적용이 안되는 줄 몰랐네요... void make1(int num, vector<int>& pSum, map<int, int>& pCount) { for (int interval = 1; interval < num; interval++) { for (int start = interval; start <= num + interval - 1; start++) { int sum = pSum[start] - pSum[start - interval]; pCount[sum]++; } } pCount[pSum[num]]++; // 전부 선택하는 경우 } void make2(int num, vector<int>& pSum, map<int, int>& pCount) { for (int start = 1; start <= num; start++) // 첫번째부터 출발 { for (int interval = 0; interval < num - 1; interval++) / { int tPSum = pSum[start + interval] - pSum[start - 1]; pCount[tPSum]++; } } pCount[pSum[num]]++; // 전부 선택하는 경우 } make1함수를 사용시 840ms정도 걸리고,make2함수 사용시 480ms정도 걸립니다. 두 코드 다 시행 횟수는 (n-1) * n + 1아닌가요? 왜 이럴까요...? 챗 지피티는 메모리 접근이 순차적이지만, '일정한 간격 유지'가 '인덱스 하나 고정 + 순차 증가'보다 cpu 캐시 히트가 더 유리해서 라는데, 혹시 제가 놓치고 있는 부분이 없을까요?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
BOJ 1342 메모리초과 관련
from itertools import permutationsinfos = list(input())ans = 0for comb in set(permutations(infos)): ok = True for i in range(0,len(infos)-1): if comb[i] == comb[i+1] : ok = False break ans += okprint(ans)BOJ 1342번 문제를 다음과 같이 풀었는데 계속해서 메모리초과 때문에 오답처리가 나서 질문 남깁니다.permutations가 한 번에 모든 순열을 생성하기 때문에 메모리 문제가 발생한다고 GPT의 답변을 얻을 수 있었으나, 강사님의 풀이 1번에도 permutations가 있는데도 메모리초과가 나지 않고 정답처리가 나서 왜 이런 차이가 나는 지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-V 누적합 질문
안녕하세요. 선생님. 문제는 다 이해가 됐는데 코드 시간때문에 질문 올립니다.void make1(int num, vector<int>& pSum, map<int, int>& pCount) { for (int interval = 1; interval < num; interval++) // 피자 조각을 몇 개를 더 이어서 고를 것인지, 전부 선택은 제외 { for (int start = interval; start <= num + interval - 1; start++) { int sum = pSum[start] - pSum[start - interval]; pCount[sum]++; } } pCount[pSum[num]]++; // 전부 선택하는 경우}void make2(int num, vector<int>& pSum, map<int, int>& pCount){ for (int start = 1; start <= num; start++) // 첫번째부터 출발 { for (int interval = 0; interval < num - 1; interval++) // 피자 조각을 몇 개를 더 이어서 고를 것인지, 전부 선택은 제외 { int tPSum = pSum[start + interval] - pSum[start - 1]; // 사이즈 pCount[tPSum]++; // 해당 사이즈 카운트 추가 } } pCount[pSum[num]]++; // 전부 선택하는 경우}make1함수를 사용시 840ms정도 걸리고,make2함수 사용시 480ms정도 걸립니다.왜 이럴까요...? 챗 지피티는 메모리 접근이 순차적이지만, '일정한 간격 유지'가 '인덱스 하나 고정 + 순차 증가'보다 cpu 캐시 히트가 더 유리해서 라는데, 혹시 제가 놓치고 있는 부분이 없을까요?
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
3:30 - sys.stdin.readline 질문
my_input = sys.stadin.readline 으로 정의해주셨는데, 혹시 my_input = sys.stadin.readline() 이렇게 정의하고 list(map(int, my_input.split()))이렇게 쓸 수도 있나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
백준 2178 질문 있습니다.
http://boj.kr/e8efaf05143848f897d8154f0609f71e현재 코드는 맞았습니다. 가 뜹니다. 맞은 이유가 // ios_base::sync_with_stdio(false); // cin.tie(NULL); // cout.tie(NULL);이렇게 주석처리를 하니까 맞더라구요.. 이것때문에 2틀정도 머리를 싸맸는데 왜 위 코드 3줄을 주석처리 한다고 맞았습니다 가 뜨는지 잘 이해가 안가는데 왜 그런것인가용??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 펠린드롬 문제 2% 실패 반례좀 찾아주세요 ㅠㅠ
http://boj.kr/24eb99ddd0bb4e11af50a5e4579c8107 해당 문제에 대해서 진짜 많이 고민해보았는데, 원인을 알 수가 없습니다.. 기본적인 부분에서 틀린 것 같은데, 코드가 지저분한 것 같아서 그런지 봐도 문제가 무엇인지 잘 모르겠습니다 ㅠㅠ