월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
초기화 관련 질문
강사님 안녕하세요. bottom-up 방식으로 풀때처럼 처음 다이나믹배열을 초기화할때 0행과 0열을 누적합으로 초기화 한 후 다음과 같이 풀었는데, 잘못된 방법일까요??제생각엔 재귀호출이 더 적게 되어서 효율적이라고 생각해 이렇게 풀었습니다. import sys sys.stdin = open('in5.txt','r') def dfs(y,x): if dis_arr[y][x] > 0: return dis_arr[y][x] else: dis_arr[y][x] = min(dfs(y-1,x),dfs(y,x-1)) + arr[y][x] return dis_arr[y][x] if __name__=="__main__": n = int(input()) arr = [list(map(int,input().split())) for _ in range(n)] dis_arr = [[0]*n for _ in range(n)] # 거리저장배열 dis_arr[0][0] = arr[0][0] # 첫번째 거리 저장 # 0번째 행과 열 누적합 하기 for i in range(1,n): dis_arr[0][i] = dis_arr[0][i-1] + arr[0][i] dis_arr[i][0] = dis_arr[i-1][0] + arr[i][0] print(dfs(n-1,n-1))
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
격자판 최대합 질문
안녕하세요 격자판 최대합 질문입니다.for i in range(n): sum1+=a[i][i] sum2+=a[i][n-i-1] 여기서 sum2가 이해가 가질 않습니다 ㅠ n이 5번 돌때면 n=1이고 i=0인데 그러면 a[0][0]이 되는것이아닌가요? 확인부탁드립니다 ㅠ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
k번째 수 질문드립니다
여기서 n을 input으로 받아서 활용을 안 하고 있는 거 같은데그러면 사용자의 입력에 따라 n이랑 리스트 a의 개수가 다를 수도 있는 거 아닌가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
시간 복잡도(7.소수의 개수(에라토스테네스 체))
안녕하세요해당 문제의 답을 스스로 작성해보았는데요이렇게 했더니 n의 숫자가 작을 때는 잘 작동 되지만 숫자가 커지면 작동이 안됩니다. 선생님의 코드처럼 이중 for문을 사용했는데 선생님의 코드는 잘 작동이 되고 제 코드는 잘 작동이 되지 않습니다.. 선생님의 코드는 배수를 활용해서 더 빠를 것이라고 생각이 되긴 하는데, 제 코드를 어떻게 수정하면 좋을까요n = int(input()) cnt =[0] * (n+1) count =0 for i in range(1,n+1): for j in range(2,n+1): if i % j == 0: cnt[i] = cnt[i] + 1 if cnt[i] == 1: count = count +1 print(count)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
for문 범위 관해서 질문드립니다
섹션 2의 3번 문제에서는 첫번째 for문에 n을 넣어서 돌렸는데섹션 2의 4번 문제에서는 첫번쨰 for문에 a를 넣어서 돌렸습니다. 두 문제가 비슷한 유형인거같아서 왜 같은 방식으로 for문을 돌리지 않는지 헷갈려서 질문남깁니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
14번만 채점파일 없다는걸 미리 알려줬으면 좋겠어요
채점파일 찾느라 3번정도 다운로드 받고 찾아 해맸습니다.공유하는 파일에 설명을 같이 넣는다 던지 강의 끝까지 보기전에 미리 알게 했으면 더 편리 했을것 같습니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
강의에서 주신 코드가 입력값이 최악인 경우(ex)10 10) 시간초과 fail받을 코드 아닌가요??
선생님이 주신 테스트 케이스는 통과하지만 문제에 주어진 조건'첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N) 이 주어집니다.'에 최악의 케이스에서는 시간 초과로 통과하지 못한다고 생각합니다. 10,10 을 넣으면 3초를 아득히 넘어버리니까요.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
파일 입출력에 대해 질문드립니다.
안녕하세요, 파일입력과 함께 파일출력에 대해 궁금한 부분이 있어 질문드려요.input.txt 파일에서 값을 불러와 output.txt파일로 출력값을 프린트하고 싶은데 이런 경우는 코드를 어떻게 작성하면 되는가요? sys를 쓰면 보다 간단하게 출력파일도 만들어낼 수 있을 거 같아서요.
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 예시 2 질문
안녕하세요?문제 예시 2의 입력 예제6 0 60 60 90 60 60 60에서 왜 답이 5인지 잘 이해가 안 갑니다!문제에는 대기목록에 자기보다 위험도가 높은 환자가 없으면 자기가 진료를 받는 구조라고 하셨는데,그러면 위의 예시에서 0 번째 환자가 진료를 받을 때는당연히 2번째 아닌가 싶어서요제 코드로는 두 번째, 다섯 번째 케이스에서 오답이 나오는데요문제 설명에서 중복된 값이 있을 때 설명이 좀 이해가 잘 안 와 닿습니다.from collections import deque import sys # sys.stdin = open('input.txt','r') n, m = map(int, input().split()) p = list(map(int, input().split())) queue = deque(p) done = 0 target = queue[m] res = 0 while queue: maxx = max(queue) a = queue.popleft() if a < maxx: queue.append(a) else: done += 1 if a == target: res = done print(res) break
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 예외처리에 관한 질문
안녕하세요 선생님. 강의 잘 듣고 있습니다.선생님의 풀이를 보니, 처음부터 모든 토마토가 익어있는 경우와 익은 토마토가 하나도 없는 경우는 안넣으신거같은데, 따로 이유가 있을까요? 또한, 아래는 제 풀이코드인데 dis 배열을 만들어서 선생님 풀이처럼 하는 것보다 복잡도가 높을까요? import sys from collections import deque sys.stdin = open('in5.txt','r') def total_search(arr,m,n): li = [0,0,0] # 토마토상태별로 갯수저장하는 갯수 for i in range(n): for j in range(m): # 토마토가 없는 경우 if arr[i][j] == -1: li[0] += 1 # 토마토가 안익은 경우 elif arr[i][j] == 0: li[1] += 1 # 토마토가 익은 경우 else: li[2] += 1 dq.append((i,j,0)) return li if __name__ == "__main__": m, n = map(int,input().split()) # m = 가로, n = 세로 arr = [list(map(int,input().split())) for _ in range(n)] # 맵 정보 dq = deque() # 익은 토마토 인덱스 저장 큐 dy = [-1,0,1,0] dx = [0,1,0,-1] # 토마토 상태를 파악하는 함수 li = total_search(arr,m,n) # 익은 토마토가 하나도 없는 경우 if li[2] == 0: print(-1) sys.exit() # 처음부터 모든 토마토가 익어있을 경우 elif li[2] == m*n : print(0) sys.exit() # 익는 과정 연산 while dq: tmp = dq.popleft() y,x,d = tmp[0],tmp[1],tmp[2] # y,x 인덱스, d는 날짜 # 상하좌우 연산 for i in range(4): ny = y + dy[i] nx = x + dx[i] # 안익은 토마토일 경우 if 0<=ny<=n-1 and 0<=nx<=m-1 and arr[ny][nx] == 0: # 익은 토마토로 바꾸고 # 날짜 하나 올려서 큐에 추가 arr[ny][nx] = 1 dq.append((ny,nx,d+1)) # 토마토 상태 갱신 li = total_search(arr,m,n) # 토마토가 다 익지 못한 경우 if li[1] != 0: print(-1) else: print(d)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
정답소스 코드에 대한 질문입니다.
안녕하세요 초급 코딩테스트 강좌 너무 잘 보았습니다.반복해서 복습하니 이해가 너무 잘되고 코드가 잘짜지더라구요!! 최고입니다!!혹시 이번 강좌의 정답 코드도 따로 모여있는 파일이나 깃헙 레포지토리가 있을까요 ?!다른 게시판에서 질문을 했었는데 인프런 다른 직원분이 알려주신곳(영상 오른쪽 수업자료,or 강사님의 깃허브 링크) 에는 없는것을 확인하였습니다.혹시 따로 정답 소스 코드가 있는 곳이 있을까요 ?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
영상 마지막의 출력값이 문제의 출력예제와 달라요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 영상 마지막에 F5 출력하신 뒤에 화면에 74 9 라고 출력됩니다.문제에서는 74 7 라고 출력되어야 한다는 설명이 있는데 어떤것을 기준으로 삼아야 하나요
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
파이썬 초급 코딩테스트와 같이 정답코드가 모인곳이 있을까요 ?
안녕하세요 초급 코딩테스트 강좌 너무 잘 보았습니다.반복해서 복습하니 이해가 너무 잘되고 코드가 잘짜지더라구요!! 최고입니다!!혹시 이번 강좌의 정답 코드도 따로 모여있는 파일이나 깃헙 레포지토리가 있을까요 ?!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 접근법
안녕하세요 강사님.문제를 보고 dfs 구현이 더 맞다고 생각하여 다음과 같이 dfs 방식으로 접근해서 해결했는데, bfs 방식으로 푸는 것이 더 옳바른 방향인가요? 복잡도 등의 측면에서 강사님의 풀이가 더 좋을까요? import sys sys.stdin = open('in5.txt','r') def dfs(y,x): global cnt # 현재 섬 방문 표시 후 # 주변에 섬 더 있는지 탐색 arr[y][x] = 0 for i in range(8): nx = x + dx[i] ny = y + dy[i] if 0<=ny<=(N-1) and 0<=nx<=(N-1) and arr[ny][nx] == 1: dfs(ny,nx) if __name__ == '__main__': # 입력정보 저장하기 N = int(input()) # 격자판 크기 arr = [list(map(int,input().split())) for _ in range(N)] # 맵 정보 # 상하좌우대각선 탐색 변수 dx = [0,1,0,-1,-1,1,1,-1] dy = [-1,0,1,0,-1,-1,1,1] cnt = 0 # 섬 갯수 저장 # 맵 전부 탐색 for i in range(N): for j in range(N): # 만약 섬이 발견되면 dfs로 넘겨주기 if arr[i][j] == 1: dfs(i,j) cnt += 1 print(cnt)
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
deque 방식과 lt / rt while 문 방식의 차이
안녕하세요?강사님께서 영상에서는 deque 자료형으로 바로바로 pop 하는 방식으로 코드를 짜셨는데요강의 내용:arr.sort() arr = deque(arr) cnt = 0 while arr: if len(arr)==1: cnt += 1 break if arr[0]+arr[-1] > limit: arr.pop() cnt += 1 else: arr.popleft() arr.pop() cnt += 1 print(cnt) 그런데 비슷하다고 생각한 인덱스 이동 방식은 오답인 거 같습니다 arr.sort() lt = 0 rt = n - 1 while lt <= rt: if len(arr) == 1: cnt += 1 break sum = arr[lt] + arr[rt] if sum <= limit: cnt += 1 lt += 1 rt -= 1 else: cnt += 1 rt -= 1 # 맨 끝 가장 큰 수 pop print(cnt) 테스트 케이스는 강사님께서 댓글에 알려주신 8 14971 72 73 74 75 76 77 78 149로 돌려보니, 강의 내용은 5가 나오고 두번째 방식은 4가 나오네요? 근데 제가 이해가 딸려서 그런지 인덱스 이동하는 방식과 pop 방식의 차이가 잘 머리로 들어오지 않습니다..
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
함수 만들기
선생님 마지막 줄의 return True에서 else를 쓰고 안 쓰고는 왜 상관 없는 건가요? def isPrime(x): for i in range(2, x): if x%i==0: return False return True
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
리스트와 내장함수
enumerate 함수에 대해 질문 있습니다. a=[23, 12, 36, 53, 19] for x in enumerate(a): print(x)print() for x in enumerate(a): print(x[0], x[1])print() for index, value in enumerate(a): print(index, value)print() 똑같은 enumerate함수를 썼는데왜 첫번째 for문에서만 튜플 형태로 출력이 되고 두번째, 세번째에선 그냥 값만 출력이 되는 건가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
조건문 관련 질문
선생님 조건문에서 i+=i 는 써야 하는 위치가 정해져 있는 건가요?왠지 쓰는 위치가 애매하게 느껴집니다..print 다음으로 마지막에 쓰면 되는 건가요?
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
파일 읽는데 이상한 에러 현상
안녕하세요 제 코드로 채점을 받으니 강사님이 제공하신 input.txt 케이스 5개 중, 케이스2 input.txt를 제외하고 나머지 케이스에서 전부 에러가 나옵니다 에러 내용은 Traceback (most recent call last): File "c:\Users\seheo\OneDrive\문서\바탕 화면\코테채점\AA.py", line 11, in <module> tmp = int(input())EOFError: EOF when reading a line인데요아마 파일을 제대로 못 읽는 거 같습니다.(그냥 제공된 txt 파일을 그대로 가져다 파일 이름만 바꿔서 썼습니다.)제 코드는 import sys sys.stdin=open('input.txt','rt') k, n = map(int, input().split()) # print(n, m) arr = [] largest = 0 for i in range(n): tmp = int(input()) arr.append(tmp) largest = max(largest, tmp) # print(arr) # k개 랜선 길이 제각각 # 잘라서 n개의 랜선으로 만들기 # 이때 표준 최대 길이 구하기 # 1. 정렬해서 제일 큰 값의 절반으로 나눈 몫들 더해보기 # 2. 만약 n개가 합이 되면 그것? cnt = 0 lt = 1 rt = largest res = 0 while lt <= rt: mid = (lt+rt)//2 cnt = 0 for i in range(k): cnt += arr[i]//mid if cnt >= n: res = mid lt = mid + 1 else: rt = mid - 1 print(res) 입니다 왜 해당 현상이 나오는 것일까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
바둑이 코드 질문합니다
바둑이 코드에서 sum+(total-tsum)<result:부분 이해가 가지 않아 질문합니다.(total - tsum)이 앞으로 판단할 값, result는 현재값을 의미하는 걸로 이해했는데sum은 result와 다르게 무엇을 의미하나요?