월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이런 풀이는 어떤가요?
이런 풀이는 어떤가요? 앞에서도 res = res * 10 + int(x) 를 했었는데 자꾸 까먹고 잘 안들어오네요 이게ㅠㅠ 그러다보니 리스트도 만들고 for문도 한 번 더 사용했는데 이런식으로 코드를 짜면 안될까요? s = input() num_list = [] for i in s: if i.isdecimal(): num_list.append(i) num = '' for j in num_list: if int(j): num += j num = int(num) cnt = 0 for i in range(1, num+1): if num % i == 0: cnt += 1 print(num) print(cnt)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
강사님 갑자기 모든 코드에 대해서 exit_code_1 오류가 발생합니다.
원래 다 풀렸던 문제들도 다 exit_code_1이 발생합니다. 테스트상의 이유로 코드를 올릴테니 강사님 컴퓨터에서는 어떻게 동작하는지 알고 싶습니다. 섹션 2 의 8 뒤집은 소수 입니다. # import sys # sys.stdin = open("input.txt","rt") def reverse(x): strNum = str(x) return int(''.join(list(reversed(strNum)))) def isPrime(x): if x == 1: return False for i in range(2, x): if x % i == 0: return False return True N = int(input()) sourceArr = list(map(reverse, map(int, input().split()))) for a in sourceArr: if isPrime(a): print(a, end=" ")
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
안전한 영역 정의에 대한 부분을 조금만 보완해주시면 좋겠습니다!
우선 질 좋은 강의에 감사 인사 드립니다. 다름이 아니라 해당 문제를 풀면서 '안전한 영역'이 무엇인지 정의하는 과정에서 제가 이해하는 데 시간이 오래걸렸는데요.. 문제에서 안전한영역을 아래와 같이 정의하는데.. "물에 잠기지 않는 안전한 영역이라 함은 물에 잠기지 않는 지점들이 위, 아래, 오른쪽 혹은 왼쪽으로 인접해 있으며 그 크기가 최대인 영역을 말한다." 이 문장에서 '그 크기가 최대인 영역' 표현 때문에 이해가 잘 안되었네용.. 이 표현보다 아래 표현으로 하면 더 쉽게 이해할 수 있지 않을까 합니다! 물론 문제를 이해하는 것도 문제 풀이하는 사람의 능력이자 몫이긴 하지만 되도록 이면 문제에 오해 소지는 없어야 하는 게 좋지 않을까 해서 조심스레 제안드립니다! 또 입력 예시로 주신 안전한 영역이 5개가 되었다는 것에 대해 5개의 영역을 표시해주시면 더 가시적으로 이해가 되지 않을까 하네요 ㅎㅎ "물에 잠기지 않는 안전한 영역이라 함은 물에 잠기지 않는 지점들이 위, 아래, 오른쪽 혹은 왼쪽으로 인접해 있으며 인접한 영역들의 크기가 최대인 영역을 말한다."
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
k번째 약수 문제 관련 질문드립니다.
# k번째 약수 import sys def return_numbers(x): number_list = [] for i in range(1, x+1) : if x%i == 0: number_list.append(i) return number_list sys.stdin = open('input.txt', 'rt') num, k = map(int, input('숫자, n번째 지정 : ').split()) number_list = return_numbers(num) if len(number_list) < k : print(-1) else : print(number_list[k-1]) ------------------------------------------- 위와 같이 코드를 작성해서 채점했는데 틀린 답변이 되어서 질문드립니다. 설명해주신 코드는 모두 이해했지만, 어느부분에서 제가 놓친 부분이 있는지 여쭈어 보고 싶습니다. 감사합니다!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
마지막 인풋 테스트케이스 반례 질문입니다!
안녕하세요! 질 좋은 강의에 감사인사부터 드립니다 :) 다름이 아니라 해당 문제에 대해 강사님의 아이디어만 듣고 스스로 구현해보았는데, 마지막 인풋 테스트 케이스에서 오답이 발생하는데요!? 이후에 강사님 풀이를 보고 조건 하나가 빠져서 오답이 발생했다는 것은 알았는데, 왜 오답이 발생하는지에 대해서는 잘 모르겠어서요.. 인풋이 워낙 큰 값이어서 디버깅하기가 힘드네요.. 우선 마지막 인풋 테스트 케이스는 input: 7 8945 output: 1790 인데요! 제가 처음에 작성한 코드는 아래 코드인데요! 선생님 풀이를 본 후 추가시킨 if 문이 주석 처리 해준 부분입니다. 왜 제 풀이로 하면 마지막 인풋에 대해서 1063이라는 아웃풋이 나오게 될까요..? 근본적인 이유가 궁금하네요.. s, e = map(int, input().split()) move = [1, -1, 5] MAX = int(1e4) distance = [-1] * (MAX+1) distance[s] = 0 # 출발지점 거리 0으로 초기화 queue = deque([s]) while queue: pos = queue.popleft() if pos == e: break # 3가지 방법으로 이동 for m in move: #if 0 < pos + m <= MAX: # 이 조건이 없으면 마지막 인풋 오답나옴 if distance[pos + m] == -1: # 방문한 곳 아니라면! distance[pos + m] = distance[pos] + 1 queue.append(pos + m) print(distance[e])
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
DFS를 활용한 슬라이딩 윈도우 결과 만드는 방법 질문입니다!
안녕하세요! 강의 잘 듣고 있습니다! 강의 내용과 살짝 벗어나긴 한데 너무 궁금해서 질문드립니다 ㅜㅜ 구체적인 방법론을 제게 알려주시기보다 가능하다/불가능하다로만 답변 주시면 감사하겠습니다! 그 이후로는 제가 연구해볼게요! 아래과 같은 리스트가 존재할 때, 1개부터 5개까지 슬라이딩 윈도우 경우의 수를 탐색하고 싶을 때 DFS를 활용해서 구현할 수 있나요?? 예를 들어, [1,2,3] 이 있을 때, 결과값이 [1], [2], [3], [1,2], [2,3], [1,2,3] 이렇게 결과가 나오는 것을 DFS로는 구현이 가능한가요? 이중 for loop로 구현은 했는데.. 이게 리스트 크기가 커지면 시간초과 문제가 발생할 것 같아 DFS로 구현하는 방법이 있나 문의드립니다 ㅜㅜ 가능하다/불가능하다로만 답변주시면 정말 감사하겠습니다! 제가 이중 loop로 구현한 코드는 아래와 같습니다! sets = ['a', 'b', 'c', 'd', 'e'] n = len(sets) for size in range(1, n+1): for i in range(n-size+1): window = sets[i:i+size] print(''.join(window))
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코딩테스트 대비(프로그래머스 레벨1)
안녕하세요 파이썬 문제풀이 강의 듣고 있는 사람입니다. 이 강의에 있는 문법과 지금 코드 구현력 기르기 ,시뮬레이션까지 듣고 어느정도 익숙해진 상황인데 제가 준비하는 기업 테스가 프로그래머스로 진행된다고 하네요.. (약 4일정도남음) 테스트 난이도가 프로그래머스 1~2 정도라고합니다. 어떤식으로 공부를 진행해야 빠르게 준비 할수 있을까요!!? 레벨 1까지만이라도 공부해보려고 합니다 남은시간.. 여기 강의 에있는 이분탐색과 자료구조 강의까지 완독후 레벨 1 을 직접 접근해도 가능할까요? 지금 당장 프로그래머스 문제를 풀려고하니 도저히 풀기가 힘들었어서 이렇게 문의 뒤늦게라도 드립니다 ㅠㅠ 조언 부탁드립니다..
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
뒤집은 소수
안녕하세요 강사님 강의 잘보고있습니다! 이번강의에선 앞선 강의인 에라토스테네스체 방법없이 구현하셨는데 이렇게 하신 이유가 제 생각에는 2가지 이유인거같은데 맞는지 여쭤보고 싶어서 이렇게 글을 올리게 되었습니다. 1. 리스트에 입력값을 저장하게되는데 이 값들이 어떤 값들이 들어올지 모릅니다. 2. 에라토스테네스 체 방법을 하려면 각 숫자에 따른 빈 리스트를 만들어야합니다. 그래서 리스트안에 있는 입력값에 따라 빈 리스트 크기가 달라져서 인거 같다고 생각했습니다. 혹시 맞을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
59번째줄 코드 관련 질문
선생님 수업 잘 듣고 있습니다. 감사합니다. 59번째줄 그 행 번호까지 탐색한다고 하셨으니, for y in range(23, height-1, -1): 아닌가 여쭤봅니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
for 문에서의 list 값 질문있습니다!!!
test=[0,0,0,0] for i in range(4): test2=test test2[i]=1 print(test2) 다음과 같이 for문을 돌릴때마다 test2값을 test 리스르로 초기화 하면 제가 생각하는 예상값은 [1, 0, 0, 0] [0, 1, 0, 0] [0, 0, 1, 0] [0, 0, 0, 1] 인데 실제 결과값은 test2값을 test로 초기화하지 못하고 [1, 0, 0, 0] [1, 1, 0, 0] [1, 1, 1, 0] [1, 1, 1, 1] 으로 나오는데.. 이것은 뭐때문에 그런건가요?? 확인해보니 test값도 동일하게 변수값이 들어가네요 ㅠㅠ 그렇다고 append 함수를 써서 test값을 유지한다고 하면 test=[0,0,0,0] for i in range(4): test2.append(test) test2[i]=1 print(test2) 결과값이 [1] [1, 1] [1, 1, 1] [1, 1, 1, 1] 처럼 나오네요.. 원하는 결과값은 얻는 방법이 무엇이고, 왜 이런 결과가 나오는지 알고싶어요
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
랜센자르기(결정알고리즘)
랜선자르기(결정알고리즘) 문제에서 print(res)는 200이 나오는데 print(mid)는 201이 나옵니다. mid가 200이었을 때 lt는 lt=201, rt=200인 상태에서 while문이 종료될 덴데 그러면 res나 mid나 모두 200이 되어야 할텐데 어떻게 mid가 201되는지 이해가 안됩니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
질문있습니다!
N, M = map(int, input().split()) my_list = [0 for _ in range(N+M+1)] for i in range(1,M+1): for j in range(1,N+1): my_list[i+j] += 1 for i in range(len(my_list)): if my_list[i] == max(my_list): print(i, end = ' ') 5 6 7 마지막 for문처럼 리스트를 순회하면서 max값과 같은 것을 출력할 때 end = ' ' 로 인해서 마지막 7을 출력하고 공백도 한 칸 출력되는 것 같습니다.. 5 6 7 5 6 7 위에처럼 나와야 정답 같은데 밑에처럼 나오는 코드도 선생님께서 올려주신 테스트케이스는 다 통과 하더라구요. 실제로 코딩테스트에서 이러한 부분이 문제가 되지는 않나요? 아니면 공백없이 5 6 7 만 나오게 하는 다른 방식으로 출력하는게 있나요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 에러 납니다.
소스 코드에 있는 N=int(input()) dy=[0]*(N+1) dy[1]=1 dy[2]=2 for i in range(3, N+2): dy[i]=dy[i-1]+dy[i-2] print(dy[N+1]) 이 코드를 실행하면 Traceback (most recent call last): File "main.py", line 6, in <module> dy[i]=dy[i-1]+dy[i-2] IndexError: list assignment index out of range 이런 에러가 나오는데 dy=[0]*(N+2)로 바뀌어야 합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
dp 질문입니다.
dp 문제를 풀 때 아 이게 dp 문제다 할만한 근거를 어떻게 찾을 수 있을까요? 이전 강의에서 완탐, dfs, bfs 배운 이후로 대부분의 문제가 완탐, dfs, bfs로 풀면 될 것 같아서 잘 분별이 안됩니다. dp와 마찬가지로 이분탐색도 완탐으로 풀 수 있을 것 같은데 언제 완탐으로 풀고 언제 이분탐색으로 푸는 것이죠?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
체크 배열 함수 만드는데 질문있습니다.
선생님께서 2차원 체크 배열 만드실때 항상 ch=[[0] *n for _ in range(n)] 과 같이 만드시는데, 왜 ch=[[0]*n]*n 으로 만들면 안될까요 예를 들어 n이 3일때 ch=[[0] *3 for _ in range(3)] print(ch) => [[0, 0, 0], [0, 0, 0], [0, 0, 0]] ch2=[[0]*3]*3 print(ch2) => [[0, 0, 0], [0, 0, 0], [0, 0, 0]] print값은 둘다 동일한데 ch[0][2]=1 ch2[0][2]=1 을 넣으면 print(ch) =>[[0,0,1],[0,0,0],[0,0,0]] ch2=[[0]*3]*3 print(ch2) =>[[0,0,1],[0,0,1],[0,0,1]] 이렇게 결과가도출되네요.. 어떻게 다른지 알려주세요 ㅠㅠ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
제 코드가 틀린것일까요?
우선 풀이를 보지 않고 작성한 코드입니다. import sys sys.stdin=open("input.txt", "rt") n,m=map(int, input().split()) a=list(map(int, str(n))) b=[] x=1 while x: b.append(a[0]) a.pop(0) if len(a)==0: break while b[-1]<a[0]: b.pop(-1) m-=1 if len(b)==0: break elif m==0: for i in range(len(a)): print(a[i]) b.append(a[i]) x=0 break if m>0: for i in range(m): b.pop(-1) for x in b: print(x, end='') 채점시 case #04 에서만 wrong answer가 뜨는데, 중간에 while문 안에서 m==0 일때 break가 안드네요. 일시적인 오류인건가 하는데 이해가 안가서요.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 7 등산하기 DFS
섹션 7 DFS 문제를풀다가 return 함수에대해 혼동이 생겨서 여쭤봅니다. import sys #sys.stdin=open('input.txt', 'rt') n=int(input()) max=0 min=217000 maxArr=[] minArr=[] a=[list(map(int,input().split())) for _ in range(n)] cnt=0 for i in range(len(a)): for j in range(len(a[i])): if a[i][j] < min : min=a[i][j] minArr=[i,j] if a[i][j]>max: max=a[i][j] maxArr=[i,j] dx=[0,1,0,-1] dy=[1,0,-1,0] def DFS(x,y): global cnt if x==maxArr[0] and y==maxArr[1]: cnt+=1 else: for i in range(4): xx=x+dx[i] yy=y+dy[i] if 0<=xx<n and 0<=yy<n and a[x][y]<a[xx][yy]: DFS(xx,yy) # else: # return DFS(minArr[0], minArr[1]) print(cnt) 다음과 같이 풀어서 답을 맞췄었는데 주석처리된 else return을 넣으면 위의 코드에서 어떤부분이 달라지는건가요? return이 함수를 종료시키라는 뜻이므로 0<=xx<n and 0<=yy<n and a[x][y]<a[xx][yy] 에 해당하지 않는 값이 나왔을때 return 이 되고 다음함수로 넘어가는게 아닌가요??
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 7 미로탐색 문제 왜 체크함수로 풀면 오답이나오나요?
import sys from collections import deque #sys.stdin=open("input.txt", "r") dx=[-1, 0, 1, 0] dy=[0, 1, 0, -1] def DFS(x, y): global cnt if x==6 and y==6: cnt+=1 else: for i in range(4): xx=x+dx[i] yy=y+dy[i] if 0<=xx<=6 and 0<=yy<=6 and board[xx][yy]==0: board[xx][yy]=1 DFS(xx, yy) board[xx][yy]=0 if __name__=="__main__": board=[list(map(int, input().split())) for _ in range(7)] cnt=0 board[0][0]=1 DFS(0, 0) print(cnt)우 위에가 실제 정답이고, import sys from collections import deque #sys.stdin=open("input.txt", "r") dx=[-1, 0, 1, 0] dy=[0, 1, 0, -1] def DFS(x, y): global cnt if x==6 and y==6: cnt+=1 else: for i in range(4): xx=x+dx[i] yy=y+dy[i] if 0<=xx<=6 and 0<=yy<=6 and board[xx][yy]==0 and ch[xx][yy]==0: ch[xx][yy]=1 DFS(xx, yy) ch[xx][yy]=0 if __name__=="__main__": board=[list(map(int, input().split())) for _ in range(7)] ch=[[0]*8]*8 cnt=0 board[0][0]=1 DFS(0, 0) print(cnt) 왜 다음과 같이 체크리스트를 포함하면 답이 안나오고, 0만 나올까요?? 왜 저렇게 풀면 안되는지 알고싶어요!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이 문제에서는 왜 체크배열을 0으로 다시 바꿔주지 않나요?
사다리 타기랑 이 문제에서는 체크 배열을 풀어주지 않는데 back할 일이 없어서 그런가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
리스트 슬라이싱을 이용한 에라토스테네스의 체 질문입니다.
N = int(input()) prime = [0, 0, 1] + [1] * (N - 2) for i in range(2, int(N ** 0.5) + 1): if prime[i]: prime[2 * i::i] = [0] * (N // i - 1) print(sum(prime)) 이런식으로 리스트 슬라이싱을 이용해서 한번에 처리해 주는 에라토스테네스의 체 구현 방법이 있었는데요. 이게 코드만 봐서 뭘 하려고 하는지 이해는 되는데 작동하는 이유가 리스트 슬라이싱을 해도 call by reference로 리스트 주소로 연결되어 있고 인덱스도 그대로 가져오기 때문이라고 이해하면 될까요??