월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
뒤집은 소수
reverse 함수를 구현할 때 이렇게 구현했는데 이렇게 해도 상관없나요? def reverse(x): x = str(x) x = int(x[::-1]) return x 브루트포스 방법으로 하나하나를 확인하면 시간복잡도가 늘어나서 소수 판별시 범위를 줄이고자 중간값까지만 하셨는데 그 과정에서 몫이 아니라 math모듈을 사용해서 이렇게 해도 상관없나요? for i in range(2, int(math.sqrt(x))+1):
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
수행시간 차이
for i in range(1,N+1): for j in range(1,N+1): if all(a[i][j]>a[i+dy[k]][j+dx[k]] for k in range(4)): cnt+=1 """for i in range(1,N+1): for j in range(1,N+1): up= a[i+1][j] down=a[i-1][j] right=a[i][j+1] left=a[i][j-1] if a[i][j]>up and a[i][j]>down and a[i][j]>left and a[i][j]>right: cnt+=1 여기서 위에 for문은 3중 for문으로 수행시간이 O(n^3), 밑에 for문은 2중 for문으로 수행시간이 O(n^2)인가요? 그렇게 되면 3중 for문의 수행시간이 더 오래 걸리는데, 둘 중에 효율성이 뭐가 좋을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
주사위게임
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 주사위게임 풀다가 질문이 있어서 글올립니다 n=int(input()) for i in range(n): a=list(map(int, input().split())) k=[0]*6 # [0,0,0,0,0,0] prize=0 max_prize=-0.1 for j in a: k[j-1] += 1 if k[j-1]==3: print(k[j-1],'3번')# 2 2 2 prize=10000+(j)*1000 print(prize) elif k[j-1] ==2: print(k[j-1],'2번')# 3 3 6 prize=1000+(j)*100 print(prize) elif k[j-1] ==1: print(k[j-1],'1번')# 6 2 5 prize=max(a)*100 print(prize) print(prize) 현재 저는 이렇게 풀고 있는 중인데 3 3 6을 넣었을 때 마지막 6을 넣었을 때 계속 오류가 나서 1300으로 prize값을 얻지 못하고 계속 600으로 뜹니다. 3 3 3 6 1 1번 600 600 2 2번 1300 1 1번 600 600
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
같은 눈이 2개만 나온 경우에 대한 질문입니다.
tmp.sort() 로 값을 정렬했으니, a == c 가 성립하는 경우는 a, b, c 가 모두 같은 값인 경우밖에 없지 않을까요? 그러니 같은 눈이 2개인 elif 조건문에서 elif a==b or a==c: 가 아닌, elif a==b: 인 것이 더 정확하지 않을까요? 물론, 처음 if 조건문에서 같은 눈이 3개 나오는 경우가 미리 처리되기 때문에 결과값은 이러나저러나 똑같이 나올 것 같지만요.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
변수 질문입니다.
안녕하세요. 강의를 듣다가 질문글 남깁니다. 프로그래머스에서 문제를 풀면서 ex) -------문제------- def fun1(money, cost): return answer ------------------------ 위와 같은 문제에서, 제가 임의로 def fun2을 만들어서 money와 cost변수를 사용하고싶을때는 fun1 함수내에 fun2(money,cost) 와 같이 작성하여 변수를 넘겨줘야만 사용할수 있나요? 다른 방법이 있는지 궁금합니다.!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
조합으로 구하면 안되나요?
선생님 이 문제 부분집합으로 푸셨는데, 조합으로 구하면 안되나요? 부분집합과 조합의 차이가 무엇인가요? 아래처럼 조합으로 코드 짰는데 선생님께서 푸신 답변과 비슷한듯 다르네요. for i in range(s, n+1)을 없이 푸셨는데... 조합에서는 필요하지 않나요? def DFS(s, money): global max if s > (n+1): return if s == (n+1): if money > max: max = money for i in range(s, n+1): if i+graph[i][0] <= (n+1): DFS(i+graph[i][0], money+graph[i][1]) DFS(i+1, money) n = int(input()) graph = [] for _ in range(n): a, b = map(int, input().split()) graph.append([a, b]) graph.insert(0, [0, 0]) max = -2147000000 DFS(1, 0) print(max)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
Top down, Bottom Up
안녕하세요 강사님 강의 정말 잘 듣고 있습니다. 해당 문제에서 궁금한 점이 있어 질문드립니다. 보석의 개수가 무제한이라는 조건에서 다음과 같이 푸셨는데 for i in range(n): for j in range(w[i],k+1): dp2[j] = max(dp2[j-w[i]] + v[i], dp2[j]) 문제의 조건에서 보석이 무제한이라는 조건이 없고 하나씩만 써야 한다면 다음과 같이 풀어야 답이 나오더라구요 for i in range(n): for j in range(k, w[i]-1, -1): dp1[j] = max(dp1[j-w[i]] + v[i], dp1[j]) 이때, j를 거꾸로 돌고 안돌고의 차이가 어떤 영향을 미치는지 궁금해서 질문드립니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
방문체크 하지 않아도 되나요?
부분집합을 하는 문제라고 판단하여, 부분집합구하기 문제처럼 ch(체크) 리스트 만들어서 풀었는데 답이 안나오네요.. 무엇이 문제일까요? 강의를 보니 체크 리스트 사용하지 않으셨던데... 사용해야하는 것 아닌가요? 추가적인 질문으로, 부분집합과 조합 방식의 차이가 무엇인지 아직까지 잘 이해가 되지 않는데.. 부분집합은 가지치기가 본인 포함 전부 다 되고, 조합은 가지치기가 본인을 제외한 하위 부분만 되는게 맞나요? 부분집합을 조합처럼 구할 수 있고, 조합을 부분집합처럼 구할 수 있나요? def DFS(L, time, sum): global res if time > m: return if L == n: if sum > res: res = sum else: for i in range(n): if visited[i] == 0: visited[i] = 1 DFS(i, time+graph[i][1], sum+graph[i][0]) visited[i] = 0 DFS(i, time, sum) if __name__ == '__main__': n, m = map(int, input().split()) graph = [] for _ in range(n): a, b = map(int, input().split()) graph.append([a, b]) visited = [0]*n res = 0 # 최대 점수 DFS(0, 0, 0) print(res)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
리스트를 만드는 방법
안녕하세요, 강사님. 강의 들으면서 코딩테스트 정말 잘 준비하고 있습니다. 리스트를 생성하는 방법에 대한 질문이 있습니다. 강사님께서 리스트를 생성하실 때, 가끔은 arr = [] for _ in range(10): arr.append(int(input()) 이런 식으로 빈 리스트를 생성한 후에 그 안에 요소들을 차곡차곡 채워 넣는 방식으로 생성하시고, n = 10 arr = [0]*n for i in range(10): arr[i] = int(input()) 가끔은 이런 식으로 0을 채워넣은 리스트를 생성한 후에 각각의 index를 활용하여 list의 요소를 바꿔주는 방식을 이용하시는 것을 보았는데, 두 가지 방식에 따른 효율성(시간복잡도의 유의미한 차이가 있다 등) 및 논리성(두 번째 경우 C에서 Array를 구성하듯 리스트의 공간을 미리 확보해 놓고, 그 안에 값을 채워넣는 방식이다)의 차이가 있을까요? 또, 강사님이 선호하시는 방식은 무엇인지, 그에 대한 특별한 이유가 있는지 궁금합니다!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
sum 계산시
def DFS(L, sum): global res if L > res: ## Cut Edge return if sum > m: return if sum == m: if L < res: res = L else: for i in range(n): sum += a[i] DFS(L+1, sum) 안녕하세요! 문제 풀다가 궁금한 점이 생겨 질문드립니다. sum을 넘겨줄때 DFS(L+1, sum + a[i])가 아닌 위 하늘색 부분처럼 미리 계산해서 넘겨주면 결과가 다르게 나오던데 제 눈에는 같아 보여서요...! 결과가 달라지는 이유가 궁금합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
extend()
extend()를 사용하면 안될까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
몸무게 짝짓기
정렬 후에 짝지어서 나갈 때 가장 큰몸무게와 가장 작은몸무게 나가는게 아니라 M kg 에 최대한 가깝게 짝지어서 나가는게 맞지 않나요??
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 설명 pdf 파일 구할 수 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 동영상 항상 멈춰보고 문제를 푸는데 어떤 문제는 문단도 길고 따로 pdf파일로 보면 편할꺼 같아 문의드립니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요, 채점파일 오류때문에 문의드립니다.
아래와 같이 주석처리를 했고 AA.py를 채점파일과 같은 폴더에 두고 실행하는데 이렇게 오류가 뜹니다,, 원인이 뭘까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
cnt = 2147000000 질문입니다
cnt=0 초기 변수로 설정해두고 값을 출력하면 0 나옵니다. cnt=2147000000 변수로 설정해두고 값을 출력하면 정상적으로 출력됩니다. 이 두 개의 차이점이 어떤건가요? 1차원적 배경지식으로 바라봤을 때 0으로 설정하면 다른 값으로 충분히 바뀔 수 있다. 생각이 드는데 정확한 차이를 모르겠네요 정수의 최대 값이 2147000000 이어서 최대 값을 설정하는 것 이해가 갑니다 음수 -2147000000 어떨 때 사용하나요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 다운로드 받아서 출력하고 싶은데 경로가 어딘지 문의드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 채점 프로그램은 다운을 받았는데 여기에 있는 문제를 받아서 출력해서 보면서 풀어보고 싶은데 다운로드를 어디서 받을 수 있는지 모르겠어서 문의 남깁니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
중복 방지
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 수업 너무 잘 듣고 있습니다. K번째 큰 수 강의를 듣다가 의문이 들어 이렇게 글을 남깁니다. 같은 숫자의 카드가 여러장 있을 수 있다는 것은 같은 수의 숫자를 뽑을 수 있다는 뜻이라고 저는 이해했습니다. 삼중 for문에서 중복을 방지하기 위해서 for i in range(n): for j in range(i+1,n): for m in range(j+1,n): 을 하셨는데 제 생각으로는 3 4 4 5 6 이 있다고 치면 중복된 숫자도 포함되게 3+4+4,3+4+5,3+4+6,4+4+5+,4+4+6,4+5+6 한 뒤, 이 값들을 res에 넣어서 중복처리해주는 거라고 생각하는데 제가 잘못생각하고 있는 지 궁금하여 글을 남깁니다! 아 그리고 res =list(set())을 하고 res 출력을 해보니 중복된 것이 나오는데, set 함수가 먼저 적용되어 중복된 수를 없애고 list 형식으로 바뀌는 것이 아닌가요??
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
배열 n+1 궁금합니다.
파이썬 프로그래밍 섹션 6의 3번문제인 DFS를 활용한 부분집합 구하기 문제에 대해 궁금증이 있어 문의를 남깁니다. 해당 문제는 사용하는 경우와 사용하지 않는 경우를 파악하기 위해 0,1로 사용여부를 판단하고 있습니다. 코드에서 ch=[0]*(n+1)이 초기화 하는 부분에서 1,2,3의 칸을 만들어 초기화 하고 있는데... 배열은 0부터 시작하는 것으로 판단이 되는데 왜 1,2,3으로 하셨는지 궁금합니다.. 저렇게 만들어지면 0,1,2,3의 칸이 만들어지는거 아닌가요? ㅠ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
질문이 있습니다
DFS(L+1, sum+pv[L], time+pt[L]) DFS(L+1, sum, time) 아래의 현재문제를 안풀수도 있다는 곳을 왜하는지 조금 더 자세히 설명해주실 수 있을까요..
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이 코드도 맞을까요?
안녕하세요 강사님! 강의 잘 듣고 있습니다 밑에 코드처럼 만들어봤는데 2번 채점에서 틀린결과라도 뜹니다. 혹시 이 코드에서 문제가 있는지 있다면 어디를 고쳐야하는지 궁금합니다! from collections import deque order = input() n = int(input()) for i in range(n) : cnt = 0 isTrue = False dq=deque(input()) for j in dq : if cnt < len(order) and j == order[cnt] : cnt+=1 if cnt == len(order) : isTrue = True print('#%d %s' %(i+1,'YES 'if isTrue else 'NO'))