묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨코딩테스트 [ ALL IN ONE ]
문제 교재는 따로 없는 거 맞나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요코테 적용 문제들은 교재에 따로 없이 강의 아래의 리트코드 주소를 통해서 확인하고 푸는 거 맞나요??영어로 되어있어서 질문 올려봅니다.
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
3-8 해쉬 관련 다른 풀이도 궁금해요.
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 3-8 해쉬-2어떤 알고리즘을 학습하고 계신가요? 해쉬여기까지 이해하신 내용은 무엇인가요? 전체 이해 완료안녕하세요 선생님 궁금한 점이 있어요.HashTable의 경우에도 조회 성능이 최선일 경우 O(1)이고, set 자료구조에 포함되어 있는 지 여부조회도 O(1)로 이해를 했습니다!해당 문제의 경우 set으로 변환하고 풀어도 시간복잡도 면에서 성능은 비슷하다고 봐도 될까요~? def get_absent_student(all_array, present_array): present_students_set = set(present_array) for student in all_array: if student not in present_students_set: return student
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
재귀함수 관련 질문
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 어떤 알고리즘을 학습하고 계신가요? 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?재귀함수 부분이 알려주신 문제에선 이해가 되는데, 제대로 이해가 안된 느낌이라서 혹시 연습문제를 풀면서 기본기와 감을 익힐만한 문제들 추천해주실 수 있으신가요?코드의 어떤 로직이 이해가 안 되시나요?재귀함수의 작동원리는 알겠으나, 실제로 구현하고자 할 때 어떻게 구현해야할지 문제마다 새롭게 다가오는 것 같습니다.어떤 개념이 헷갈리시나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
해결됨김영한의 실전 자바 - 중급 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 미만으로 문제 수정되야 할 것 같아요
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
투포인터 25:15 질문
투포인터 강의 25:15분 부터 나오는 설명에 대해 질문이 있습니다.0이 3개가 있는데0 + 0 이 왜 6.5가 되나요??그리고 6.5 + 0을 하는데6.5가 어디서 나오는지 이해가 안되었습니다.짜투리가 0이 3개면 그냥 0 아닌가요??
-
미해결해외 빅테크 코딩 인터뷰: LeetCode 포기자의 합격 공부법
조금만 더 고민하면 풀수 있을거 같을때
최대 10분 고민해보고 발상 안되면 넘어가서 발상할 수 있는 방법을 공부하라고 했는데, 막상하다보면 '아 이거 조금만 더 고민하면 해볼 수 있겠다' 란 마음이 들면서 그때부터 이리저리 시도해보고 코드 짜보고 그렇거든요? 이렇게 하다보면 한문제당 시간이 오래 걸리기도 하고요. 못풀때도 있고요. 이런경우 조언 부탁드려요.
-
미해결그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
해시 테이블에서 질문이 잇습니다.
안녕하세요. 감자님.해시 테이블을 복습하던 도중에 질문이 생겨서 글을 남깁니다. (해시 테이블의 인덱스, 데이터)와 (데이터의 key,value)에 대해 질문 드리고자 합니다. 해시 테이블의 인덱스-데이터와 데이터의 key-value는 별도의 개념인가요?해시 함수가 없는 해시 테이블?(이런 경우는 거의 없겠지만)은 데이터의 key-value 자체가 해시 테이블의 인덱스-데이터가 되지만 보통은 해시 함수를 사용하기 때문에 인덱스-데이터, key-value는 별도이고 key의 용도는 해시 함수를 거쳐 특정 인덱스에 접근하기 위함 + 인덱스 내에 존재하는 알맞은 데이터에 접근하기 위한 용도인가요? 제가 이해한 개념을 그림으로 표현해봤습니다. 좋은 강의 감사합니다!
-
해결됨카카오 코테 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 되도록 코드를 작성했는데,일단 백준 기준으로는 통과가 됐지만 위와 같이 한줄 입력 시 바로 한줄이 출력이 되고 있어서요혹시 나중에 이런식으로 작성할 때 문제가 되는 경우가 있을까요?
-
해결됨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 하도록 했는데 괜찮은 접근일까요?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 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가 있는데도 메모리초과가 나지 않고 정답처리가 나서 왜 이런 차이가 나는 지 궁금합니다.
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
3:30 - sys.stdin.readline 질문
my_input = sys.stadin.readline 으로 정의해주셨는데, 혹시 my_input = sys.stadin.readline() 이렇게 정의하고 list(map(int, my_input.split()))이렇게 쓸 수도 있나요?
-
해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
시간복잡도 계산 시 1회 연산당 연산량은 왜 고려하지 않는 건가요?
물론 시간복잡도 측정 방식 중 대표적인 빅오 표기법 자체가 n이 점점 커져서 무한대로 커지는 걸 가정하니까 1회 연산량이 몇 배 차이 난다 해도 aN+b에서 a나 다름 없으므로 제거하는 것 같긴 합니다. 하지만 같은 O(n)이면 n이 절반만 줄어도 (n이 무한히 커진다고 가정할 때) 그 효과가 무시할 만한 수치가 아닐 것 같아서 여쭤 봅니다. (ChatGPT 답변은 뭔가 신통치 않고, 근거자료 달라고 해도 못 가져오길래 질문드립니다.)
-
해결됨코딩테스트 [ ALL IN ONE ]
LCA 관련해서 질문이 있습니다.
LCA 코드에서 left, right 변수는 방명록 (visited) 변수와 같이 방문한 값을 저장하기 위한 용도로 사용하는 것인 가요?!
-
해결됨실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지
total을 float으로 바꾸신 이유
안녕하세요 더치 페이 함수 만들기에서 going_dutch 함수 리턴값 계산하실 때 return float(total) / num_of_ppl 로 int 값인 total을 float으로 바꾸셨는데 굳이 float으로 바꾸신 이유가 궁금합니다 어차피 int끼리 나눗셈(/)을 하면 결과가 무조건 float으로 나오는데,굳이 total을 float으로 바꾸신 이유가 있을까요?바꾸지 않아도 결괏값은 float으로 나오지 싶어서요. 답변 기다리겠습니다. 감사합니다
-
미해결그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
터미널 설정
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.vs code에서 터미널 설정할 때 mac은 어떤 걸로 설정을 하며 되나요?
-
해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
2:13분 관련 질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 섹션1 시간복잡도강의 2:13초 쯤에 나오는코드에서 시간을 측정하는것이 아닌 성능에 많은 영행을 주는 부분을 찾아 실행시간을 예측하는 것이라 하셨는데 이 실행시간이라는 말이 실제시간을 말하는게아니라 입력크기에 따른 실행횟수를 말하는건가요??
-
해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
8:47초경부터 9:00초까지 질문입니다.
같은 질문이 없는 것 같아서 올립니다. 아직 어떤 데이터도 추가하지 않았다면 newNode.next = this.head;에서 this.head는 null인데, 그럼 영상 우측 도식과 상관 없이 새 노드의 포인터가 아무것도 가리키지 않음헤드가 새 노드가 됨이렇게 되는 게 맞나요? 자료구조 공부가 처음이다 보니 그림 때문에 햇갈려서요...ㅎ
-
미해결그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
tail을 삭제하는 경우에 관련해서 질문이 있습니다.
안녕하세요 감자님. 큐 구현 강의 중 tail 부분을 삭제하는 코드에 관련해서 질문이 있어서 글을 남기게 되었습니다. else if (index == this.count - 1) { let deleteNode = this.tail; // 삭제할 노드 this.tail = this.tail.prev; // 기존 tail의 이전 노드를 새로운 tail로 설정 this.tail.next = null; // 새로운 tail의 다음 노드를 null로 설정 this.count--; // 노드 개수 감소 return deleteNode; // 삭제된 노드 반환 } else if (index == this.count - 1) { let deleteNode = this.tail; // 삭제할 노드 this.tail.prev.next = null; // 기존 tail의 이전 노드의 다음 노드를 null로 설정 this.tail = this.tail.prev; // 기존 tail의 이전 노드를 새로운 tail로 설정 this.count--; // 노드 개수 감소 return deleteNode; // 삭제된 노드 반환 }위의 코드가 제가 그림을 그려가면서 생각한 로직이고 아래의 코드가 감자님이 강의에서 올려주신 코드입니다.얼핏 생각하고 그림으로 대조해봤을 때 똑같은 기능을 하는 코드들인데 어떤 차이가 있는지 chatGPT한테 물어봤습니다.아래의 코드의 경우는 연결리스트에 노드가 1개 존재할 때 this.tail.prev가 null이기 때문에 error가 발생할 가능성이 있다고 했었습니다. 근데 강의에서 제공된 풀 코드를 보면 이미 연결리스트에 노드가 1개인 부분은 위의 if문에서 처리되기 때문에 문제가 없는 것 같습니다.둘 중에 어떤 코드를 쓰는 게 더 정확할지 여쭙고 싶어 질문 남깁니다. 감사합니다.
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
#1090번 문제 반례가 궁금합니다.
from copy import deepcopy def init_sort_checker(checkers): tmp_list = [] sorted_sum_list = [] for idx, chk in enumerate(checkers): for i, tgt in enumerate(checkers): if idx == i: #본인으로 가는 값은 제외 continue x_val = abs(chk[0] - tgt[0]) y_val = abs(chk[1] - tgt[1]) # price, [src, tgt] 순 정렬 tmp_list.append([x_val + y_val, [idx, i]]) tmp_list.sort(key=lambda x: x[0]) # price 값 적은 순서대로 정렬 sorted_sum_list.append(deepcopy(tmp_list)) tmp_list = [] return sorted_sum_list def sort_sum_target(sorted_sum_list, k): lowest_price = 1000000*k target_idx = -1 for idx, line in enumerate(sorted_sum_list): cnt = 0 line_price = 0 for price in line: if cnt >= k-1: break line_price = line_price + price[0] cnt += 1 if line_price < lowest_price: lowest_price = line_price target_idx = idx return target_idx def k_tgt_process(k, sorted_tgt, sorted_sum_list): tgt_line = sorted_sum_list[sorted_tgt] tgt_loc = [] for i in range(k-1): tgt_loc.append(tgt_line[i][1]) return tgt_loc def k_sorting_process(tgt_loc, checkers): tgt_list = [] for tgt in tgt_loc: tgt_list.append(tgt[0]) tgt_list.append(tgt[1]) tgt_list = list(set(tgt_list)) x_list = [] y_list = [] tgt_checkers = [] for tgt in tgt_list: x_list.append(checkers[tgt][0]) y_list.append(checkers[tgt][1]) tgt_checkers.append(checkers[tgt]) x_list.sort() y_list.sort() if len(x_list)%2 == 0: #짝수 x_chk_point = [int(len(x_list)/2-1),int(len(x_list)/2)] else: # 홀수 x_chk_point = [int(len(x_list)/2)] if len(y_list)%2 == 0: #짝수 y_chk_point = [int(len(y_list)/2-1),int(len(y_list)/2)] else: # 홀수 y_chk_point = [int(len(y_list)/2)] #모아볼 위치의 case 집합 chk_point_list = [] for x_chk in x_chk_point: for y_chk in y_chk_point: chk_point_list.append([x_chk,y_chk]) # 각 checker 위치에서 좌표로 이동하는데 드는 값 계산 ttl_price_list = [] for chk in chk_point_list: x_tgt = chk[0] y_tgt = chk[1] price_list = [] for checker in tgt_checkers: x = checker[0] y = checker[1] if x_list[x_tgt] > x: x_price = x_list[x_tgt] - x else: x_price = x - x_list[x_tgt] if y_list[y_tgt] > y: y_price = y_list[y_tgt] - y else: y_price = y - y_list[y_tgt] price = x_price + y_price price_list.append(price) price_list.sort() ttl_price_list.append(price_list) return ttl_price_list def TestCases(N): checkers = [list(map(int,input().split())) for _ in range(N)] sorted_sum_list = init_sort_checker(checkers) output_str = '0' for k in range(2, N+1): min_price = 2000000 sorted_tgt = sort_sum_target(sorted_sum_list, k) tgt_loc = k_tgt_process(k, sorted_tgt, sorted_sum_list) ttl_price_list = k_sorting_process(tgt_loc, checkers) for n_list in ttl_price_list: tmp = 0 for idx in range(k): tmp = tmp + n_list[idx] if tmp < min_price: min_price = tmp output_str = output_str + ' ' + str(min_price) tmp_str = list(map(int,output_str.split())) # print(output_str) print(*tmp_str) N = int(input()) TestCases(N) 다음과 같이 코드 작성해봤는데, sample input에 대한 답은 다 도출되지만문제 제출하면 답이 틀리다 나오네요..반례나 코드상의 오류를 도와주실 수 있을까요? [사용해본 input/output]4 1 1 2 1 4 1 13 1 0 1 3 14 4 13 13 16 14 15 18 15 30 0 4 8 24 5 3 2 6 9 3 16 14 6 17 14 0 10 17 31 47 5 3 2 6 9 6 13 13 6 17 14 0 4 14 24 40 4 15 14 15 16 14 15 16 15 0 2 3 4 2 4 7 4 7 0 0 4 1 101 2 101 200 101 201 101 0 1 199 398