월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
K번째 수 문제 입출력 관련 질문입니다.
해답 소스코드를 보면 각 케이스의 출력 부분까지 for문 내에 들어가서 반복되는데요. 이 구조에서 입력을 수동으로 할 경우에는 첫번째 테스트 케이스 2줄을 입력한 후에 답이 출력되고, 다시 두번째 테스트 케이스 2줄을 입력한 후에 답이 출력되는 방식이 되지 않나요? 아래 사진처럼요. txt 파일을 import할 때는 출력 부분만 나오기 때문에 이런 차이가 발생한 것 같은데요. 수동으로 입력할 때에도 '테스트 케이스 한꺼번에 입력 -> 해답 한꺼번에 출력'해야 정답이라고 생각해서, 전역 변수로 빈 배열을 할당하고 출력 부분도 별도의 for문을 써서 구현했는데요. 이 경우 해답 코드보다는 효율성이 다소 떨어지는 것 같습니다. 실제 코딩 테스트 상황에서는 해답 소스코드 방식대로만 진행해도 괜찮은 것인지 궁금합니다. 다음은 제 코드입니다. 감사합니다! solution = [] t = int(input()) for i in range(t): n, s, e, k = map(int, input().split()) numbers = list(map(int, input().split())) solution.append(sorted(numbers[s-1:e])[k-1]) for i in range(t): print(f'#{i+1}', solution[i])
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
침몰하는 타이타닉 다른 코드 질문드립니다.
안녕하세요. 항상 좋은 강의 감사합니다. 이 문제에서 아래 코드와 같이 실제로 pop을 하지 않고 그냥 위치 이동만으로도 문제를 풀어도 괜찮을까요? 원리는 설명해주신 것과 똑같이 사용하였는데 pop을 사용하는게 문제에서 시간관점으로 보았을 때 아래 코드에 비해 더 좋은지 궁금합니다. a,b=map(int,input().split()) num=list(map(int,input().split())) num.sort() cnt=0 lt=0 rt=a-1 while (lt<=rt): if num[lt]+num[rt]<=b: cnt+=1 lt+=1 rt-=1 elif num[lt]+num[rt]>b: cnt+=1 rt-=1 print(cnt)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
lasgest에 관한 질문입니다.
안녕하세요 항상 좋은 강의 감사합니다. 앞부분의 for문에서 largest를 구할때 아래와 같이 하지 않으신 이유를 알 수 있을까요? for _ in range(k): Line.append(int(input()) largest=max(Line)
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
해시로 풀어봤습니다
import sys #sys.stdin = open("in1.txt", "r") N,M = map(int, input().split()) answer = [] dic = dict() for i in range(1,N+M+1): dic.setdefault(i,0) for i in range(1,N+1): for j in range(1,M+1): dic[i+j] += 1 sortedDic = sorted(dic.items(), key=lambda item: item[1], reverse=True) maxVal = sortedDic[0][1] for key,val in dic.items(): if maxVal == val: answer.append(key) for i in answer: print(i, end=' ') 안녕하세요. 자바스크립트 알고리즘 문제풀이로 알고리즘 연습을 하다가 파이썬으로 넘어왔는데요. 강의 두개다 잘 듣고있습니다!!👍👍 제 코드처럼 이 문제를 해시로 푼다면 시간복잡도나 효율성이 더 좋아질까요? 해시랑은 별로 관련이 없을까요? 감사합니다 :)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
제 코드가 시간복잡도가 더 걸릴까요??
n = int(input())lst = [list(map(int, input().split())) for _ in range(n)]maximum = 0mid = n // 2for i in range(mid+1): maximum += sum(lst[mid-i][i:n-i])for i in range(1, mid+1): maximum += sum(lst[mid+i][i:n-i])print(maximum)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
격자판 최대합 코드 문제점
안녕하세요. 강사님, 최대한 효율적인 코드를 짜보려고 반복문을 최대한 적게 도는 식으로 코드를 구현해봤는데, 마지막 input.txt에서 오답이 나오네요. 저로서는 전혀 이해가 안되는 부분인데 혹시 살펴봐주실 수 있을까요?? '''격자판 최대합'''import syssys.stdin = open('input.txt','rt')N = int(input())num_array = [list(map(int,input().split())) for _ in range(N)]row_sum_list =[]col_sum_list =[0 for _ in range(N)]diag_left_sum = 0diag_right_sum = 0for idx in range(N): row_sum = sum(num_array[idx]) row_sum_list.append(row_sum) col_sum_list = col_sum_list + num_array[idx] diag_left_sum += num_array[idx][idx] diag_right_sum += num_array[idx][(idx* -1) -1]print(max([max(row_sum_list),max(col_sum_list),diag_left_sum,diag_right_sum]))
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션5], 교육과정 설계문제에서요 else 문에서요..
- import sys from collections import deque sys.stdin=open("input.txt", "r") need=input() n=int(input()) for i in range(n): plan=input() dq=deque(need) for x in plan: if x in dq: if x!=dq.popleft(): print("#%d NO" %(i+1)) break else: if len(dq)==0: print("#%d YES" %(i+1)) else: print("#%d NO" %(i+1)) 이 문법에서요 else는 if 문이랑 짝이 아닌가요? 답안지를 보면 디번 else는 for문이랑 짝이 된것 같은데 제가 어떤걸 잘못알고 있는지 가르쳐 주세요~
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
오류 체크
다음과 같이 코드를 짜면 예시와 같이 정답이 나오는데 왜 오답으로 체크되는지 모르겠습니다.. import sys#sys.stdin = open('input.txt','rt')num_list=[i for i in range(1,21)]for _ in range(10): rg_nums = input().split() start_r = int(rg_nums[0]) -1 end_r = int(rg_nums[1]) rg_list = num_list[start_r:end_r] end_r -= 1 for rg_idx in range(len(rg_list)): num_list[end_r] = rg_list[rg_idx] end_r -= 1for num in num_list: print(num,end=' ')
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
공부방향,방법에 대한 질문입니다.
좋은 강의 항상 잘 듣고 있습니다..2가지 여쭤보고싶은데요 1.문제에 대해서 얼만큼 고민해야할지 잘 모르겠습니다. 현재 si 회사에서 프로젝트를 진행하는 평범하고 아직 부족한 개발자인데, 더 큰 기업에 가기 위해 퇴근 후 문제를 하루에 최소 한 문제는 풀려고합니다. 근데 고민하는시간이 너무 오래걸리는것 같아서 고민입니다. 예를들어 마굿간문제는 문제 이해의 방향을 너무 잘못잡아서 거의 문제해석만 1시간 이상했던 것 같고, 이 회의실 배정은 그리디알고리즘이 뭔지도 모르는데 그냥 풀어보고싶어서 풀어보다가 어느정도 방향성을 만들어 코드를 짰는데 결국 오답,타임리밋이네요. 회사일과 이직준비(코딩테스트)를 같이 준비하는 입장에서 문제풀이 시간과 전체적인 공부방법을 좀 제시해주실 수 있을까요? 2.제 개인 블로그에 혹시 출처를 밝히고 제가 몰랐던 부분에 대해 배운 문제나 어려웠던 문제들 위주로 정리를 해도 될까요? 항상 좋은 강의 감사합니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 이해를 잘못한거같은데요 ㅠ
아 제가 이해를 잘 못하는건지 문제 이해가 너무 어려웠네요 일단 힌트 얻어가고 몇시간 끙끙대며 5개중에 1개 빼고 success를 얻었는데.. 제 풀이와 선생님 풀이를 비교해보니 저는 마굿간끼리 거리가 1보다는 커야된다고 and 조건을 주었거든요 그 이유가 '말들이 서로 가까이 있는것을 좋아하지 않는다'라고해서 마굿간 좌표 사이의 거리가 1 이상이어야 된다고 해석했는데 지금 보니 임의해석인거같아서.. 가까이 있는 것을 좋아하지 않는다는건 그냥 같은 마구간에 들어가면 안 된다고 해석하면 되나요? 즉 한 좌표에 2마리가 못들어간다는 의미가 맞나요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
(아나그램 개선코드)
1. 만약 A리스트에는 a가 1개, B리스트에는 b가 2개인 경우에는 마지막 for문의 SH.get(a)>0일 경우에는 해당 값이 음수인데 이걸 걸러주지 못하지 않나요? 2. 또한 마지막 for문에서 'for x in a: '로 하면, A리스트에는 없고, B리스트에는 있는 경우는 어떻게 걸러주는 지 궁금합니다!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
다이나믹프로그래밍에 대해 질문있습니다 ㅎㅎㅎ
안녕하세요, 선생님 좋은 강의 감사합니다!!! 다이나믹프로그래밍 에제 풀다보니 궁금한점이 생겼는데 모든 다이나믹프로그래밍 문제는 탑다운, 바텀업 두 방식으로 다 풀 수 있는건가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
DFS 부분집합 구하기
1 2 3 1 2 까지 출력되는건 알겠는데 그 뒷부분부터 이해가 잘 안됩니다... 다시 설명 부탁해도 되나요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이런 형식도 가능한가요?
최대 높이와 최대 이전 높이의 차 Vs 최소 높이와 최소 이전 높이의 차 를 비교해서 더 작은 쪽을 빼주는 것도 가능한가요? 테스트 케이스는 통과했지만 확실하지 않아서..
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
카드역배치 문제 질문
강사님 안녕하세요 카드역배치문제 질문 있습니다 문제랑 풀이는 이해가 가는데요 문제에서 '1부터 20까지 숫자가 하나씩 쓰인 20장의 카드가 아래 그림과 같이 오름차순으로 한 줄로 놓여있다' 라고 나옵니다 그래서 마지막에 pop를 이용하여 0을 제거하기는 하지만 처음부터 시작할때 a라는 리스트가 0부터 시작해도 상관이 없는건가요...?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
파이썬 알고리즘 문제풀이 선수지식 강의자료 요청
안녕하세요. 선생님의 좋은 강의 잘 듣고 있습니다. 파이썬 선수지식에서 강의하시는 강의자료는 혹시 없으실까요? 저는 문과생이라 파이썬 코딩이 낯설지만 잘 따라가고 있는 중입니다. 그런데 강의자료가 없으니 정리하는데 좀 오래걸려서요 부디 강의자료를 공유해주시면 감사하겠습니다. 제~ 이메일 주소는 1104py@naver.com 입니다. 답변 주시면 감사하겠습니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이분검색
이분검색 할 때 리스트 sort로 정렬 후 for문으로 enumerate함수로 인덱스와 값 추출한 후 풀어도 상관없나요??
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
bfs로 풀이
import sys from collections import deque sys.stdin = open("input.text", "rt") input = sys.stdin.readline n = int(input()) mat = [list(map(int, input().split())) for _ in range(n)] dp = [[0]*n for _ in range(n)] dp[0][0] = mat[0][0] que = deque() que.append((0, 0)) while que: y, x = que.popleft() for dy, dx in zip([0, 1], [1, 0]): ny, nx = y+dy, x+dx if 0 <= ny < n and 0 <= nx < n: # 범위 확인 if dp[y][x]+mat[ny][nx] < dp[ny][nx]: # 최소 에너지가 존재하는 경우 dp[ny][nx] = dp[y][x]+mat[ny][nx] que.append((ny, nx)) elif not dp[ny][nx]: # 처음 초기화되어 있는 곳(0) dp[ny][nx] = dp[y][x]+mat[ny][nx] que.append((ny, nx)) print(dp[n-1][n-1]) 이 문제를 bfs 방식으로 풀었을 때 시간 복잡도의 큰 손해가 존재하는지 궁금합니다. 테스트케이스는 통과를 하였습니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
e랑 k부분에서요
a[s-1:e]면 s부터 e-1까지 슬라이싱 하는거라고 생각했는데 틀렸는지요? a[k-1]부분에서도 k번째를 추출하려면 a[k+1]이라고 생각했는데 어디를 잘못생각하고 있는건지 헷갈립니다!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
리스트 정렬 질문
안녕하세요, 알고리즘 강의 k번째 수 듣다가 질문 드립니다. 저 혼자 풀 때 막히는 부분이 있었는데요 정렬 부분에서 이해가 안가는 부분이 있었습니다 a=[3,4,1,2,34,89,0,4,5] answer = a.sort() print(answer) 이렇게 출력 할 경우 리스트가 오름차순으로 정렬 되어서 출력이 될 것이라고 생가했는데 출력결과가 None 이 나옵니다.ㅠㅠ 이 이유를 알 수 있을까요?