월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
queue가 더 효율적인 이유가 무엇인가요?
이 문제를 queue로 접근하는 이유가 무엇인가요? 채점기를 돌렸을 때는 이상이 없는 코드입니다. 공주 구하기나 응급실 문제처럼 원소를 리스트에서 제거할 필요가 없는 문제 같은데 pop(deque의 경우 popleft)을 사용해야 하는 이유가 무엇인지 궁금합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
제가 구현해보았는데 제 코드는 어떤 부분이 잘못된 건지 알려주실 수 있으신가요?
import syssys.stdin = open("input.txt", "rt")def dfs(lev, q, w, e): global a_max if(lev == n): a_max = min(a_max, max(q,w,e)-min(q,w,e)) else: dfs(lev+1, q+a[lev], w, e) dfs(lev+1, q, w+a[lev], e) dfs(lev+1, q, w, e+a[lev])if __name__ == "__main__": n = int(input()) a = list() for _ in range(n): a.append(int(input())) a_max = 99999 dfs(0, 0, 0, 0) print(a_max)제가 구현해봤는데 어느 부분이 잘못된건지 궁금합니다.답은 1이나오더라구요
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
while문 이상해서 질문드립니다!!
안녕하세요. "섹션5. - 3번_후위표기식 만들기" 질문이 있습니다. for x in data: if x.isdecimal(): res += x else: if x == '(': stack.append(x) elif x == '*' or x == '/': while stack and (stack[-1] == '*' or stack[-1] == '/'): res =+ stack.pop() stack.append(x) ... ... ... 연산자가 곱셈(*)이랑 나눗셈(/)일때, while문에서는 아래의 다른 while문들과는 다르게, '(' 연산자가 나오면 멈춰야하는 != '(' 가 있는데 왜, 위에 쓴 while문에는 없는지 모르겠습니다. 똑같이 != '(' 를 입력해줬는데 돌아가긴 하더라구요. 혹시 넣어도 되는 부분인지, 아니면 넣어주면 안되는지 궁금합니다 ㅠㅠㅠ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션5. - 3번_후위표기식 만들기 질문이요!
안녕하세요. "섹션5. - 3번_후위표기식 만들기" 질문이 있습니다. for x in data: if x.isdecimal(): res += x else: if x == '(': stack.append(x) elif x == '*' or x == '/': while stack and (stack[-1] == '*' or stack[-1] == '/'): res =+ stack.pop() stack.append(x) ... ... ... 연산자가 곱셈(*)이랑 나눗셈(/)일때, while문에서는 아래의 다른 while문들과는 다르게, '(' 연산자가 나오면 멈춰야하는 != '(' 가 있는데 왜, 위에 쓴 while문에는 없는지 모르겠습니다. 똑같이 != '(' 를 입력해줬는데 돌아가긴 하더라구요. 혹시 넣어도 되는 부분인지, 아니면 넣어주면 안되는지 궁금합니다 ㅠㅠㅠ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코드를 이렇게 짜봤는데 코드 평가 한번해주시면 감사하겠습니다.
import syssys.stdin = open("input.txt", "rt")def dfs(lev, score): global a_max if(lev > n): return if(n == lev): a_max = max(score, a_max) else: dfs(lev+arr[lev][0], score+arr[lev][1]) dfs(lev+1, score)if __name__ == "__main__": n = int(input()) arr = list() for _ in range(n): a, b = map(int, input().split()) arr.append((a,b)) a_max = 0 dfs(0, 0) print(a_max)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
강의에서 그래프 문제가 너무 적은거 같은데
다익스트라나 플로이드 와샬 등 그래프 예제가 조금 적은 것 같은데 dfs나 bfs보다 그래프 문제의 중요도가 낮은가요??
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
약수들 중 K번째로 작은 수를 출력하라고 했을 때 정렬은 안해줘도 되나요?
정렬 SORT는 안해줘도 차례대로 출력되는 것인지 궁금합니다
- 파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코딩테스트를 볼 언어 선택에 관한 질문입니다
삭제된 글입니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
'int' object is not callable
#sum부분에서 자꾸 오류가 나네요. #답변해주시면 감사하겠습니다. N, m = map(int, input().split()) n=list(map(int, input().split())) cnt=0 for i in range(0, N): for j in range(i+1, N): t=n[i:j] if sum(t)==m: cnt+=1 print(cnt)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
괄호 안에 연산자들에 우선순위가 있는 경우엔 어떡하나요?
예를들어 괄호안에 * 가 + 보다 먼저오는경우 (3*6+8)+3/2 괄호안의 연산자들이 ')'를 만났을 때 순서대로 pop되면 안될거 같은데 어떻게 처리해줘야 하나요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
input 질문입니다.
코딩테스트를 준비ㅏ다보니 input() 과 sys.input.readline() 과의 실행속도에서의 차이가 있다보니 import sys 하고 input = sys.stdin.readline 을 해놓고 input값을 입력하여 예시를 하는것이 코딩테스트를 위한 방식에서 괜찮은 방식인지 궁금합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
res의 의미
3:43초에 res는 무엇의 줄임말인가요? 몇번 쓰시던데 뜻을 모르니 와닿지가 않네요..강의 재밌게 잘 보고있습니다!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
반례를 못찾겠습니다 ㅠㅠ
mport sys input = sys.stdin.readline def sol(): global maxN n = int(input()) table = [] maxN = -1e9 for i in range(n): a,b = map(int,input().split()) table.append((i+1,a,b)) def dfs(s, tot): global maxN if tot > maxN: maxN = tot for i in range(s, n): if s == 0: dfs(i+1, tot+table[i][2]) elif table[s-1][0] + table[s-1][1] <= table[i][0]: dfs(i+1, tot+table[i][2]) dfs(0, 0) print(maxN) sol() 4번 케이스에서 오류가 나는데 반례를 찾지 못하겠습니다 ㅠㅠ 강의 항상 잘 보고있습니다!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 질문
선생님의 좋은 강의 덕분에 막막했던 코딩테스트의 기본기를 탄탄하게 다지고 있습니다 ^^ 정말 감사드립니다! 다름이 아니라 인강 내용을 복습하면서 문제를 다시 풀어보던 도중 높은 탑 쌓기 문제에서 in4,5 값을 넣었을 때 나오는 결과가 답보다 1씩 적게 출력이 되어서 오랫동안 어떤 부분이 잘못됐는지 고민해보았지만 도저히 어떤 부분에서 1이 덜 더해져서 출력되는지 찾지 못해 질문드립니다 ㅠㅠ if __name__=="__main__": n=int(input()) tot=[] for i in range(n) : s,h,w= map(int,input().split()) tot.append((s,h,w)) tot.sort(reverse=True) tot.insert(0,0) dy=[0]*(n+1) dy[1]=tot[1][1] for i in range(2,n+1) : maxi=-1 for j in range(1,i): if tot[j][2]>tot[i][2] and dy[j]>maxi: maxi=dy[j] dy[i]=maxi+tot[i][1] print(max(dy))
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 질문
안녕하세요 수업시간에 올려주신 코드를 보면 deque에서 pop할 때 m값이 나올 때 break를 걸어주었습니다. 그런데 for문에서 next값에서 m이 나올 때 바로 break를 걸어주는 것이 이후에 deque에서 m이 나올때까지 더 찾지 않으므로 효율적인것 같아서 아래와 같이 짜보았는데 효율성 측면에서 별 차이가 없는 건가요? start,end=map(int,input().split()) max=10000 ch=[0]*(max+1) dis=[0]*(max+1) ch[start]=1 dis[start]=0 dq=deque() dq.append(start) bp=False while dq: now=dq.popleft() for next in(now-1,now+1,now+5): if 0<next<=max: if ch[next]==0: dq.append(next) ch[next]=1 dis[next]=dis[now]+1 if next==end: bp=True break if bp: break print(dis[end])
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
section7 송아지찾기 시간초과 질문드립니다.
안녕하세요. 강의를 듣던 중에 질문이 있어서 글을 남기게 되었습니다. section7 bfs문제인 송아지찾기, input 4,5 파일에서 시간초과가 나는데 이유를 알 수가 있을까요? 아래는 제가 짠 코드이며 알고리즘은 같지만 스타일만 조금 다릅니다. 답변 주시면 감사하겠습니다. import sys from collections import deque # sys.stdin = open("input.txt","r") def find_calf(location): queue = deque() queue.append(location) visited[location] = True while queue: ### 현재 현수의 위치 cur_location = queue.popleft() if cur_location == E: break ### 현수는 +1, -1, +5 중 하나의 혀애로 이동 for next_location in [cur_location+1, cur_location-1, cur_location+5]: ### 다음이동위치가 방문하지 않았을 때, if visited[next_location] == False: ### 좌표의 범위는 1~10000 if next_location>=1 and next_location<=10000: queue.append(next_location) visited[cur_location] = True count[next_location] = count[cur_location]+1 print(count[cur_location]) if __name__ == '__main__': S, E = list(map(int, sys.stdin.readline().split())) ### 위치 방문여부를 체크 visited = [False] * 10001 ### 위치까지 가는 횟수를 저장 count = [0] * 10001 find_calf(S)
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
합병정렬처럼 풀었는데 이 코드는 어떤가요?
import sys#sys.stdin=open('input.txt', 'rt')n = int(input())a = list(map(int, input().split()))cnt = 0left = 'L'right = 'R'lf = 0rt = len(a)-1cur = 0str = ""while(cur<a[lf] and cur<a[rt]): if(a[lf]>=a[rt]): cur = a[rt] cnt+=1 str += right rt-=1 else: cur = a[lf] cnt+=1 str += left lf+=1while(cur<a[lf]): cur = a[lf] lf+=1 str+=left cnt+=1while(cur<a[rt]): cur = a[rt] rt-=1 str+=right cnt+=1print(cnt)print(str)
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
오류 부분
안녕하세요! 선생님의 강의 들으며 많은 도움 얻고 있습니다 ^^ 다름이 아니라 제가 짠 코드에서 in1, in2, in3 까지는 답이 맞는데, in4부분 부터는 index out of range 오류가 나서 res의 길이를 더 늘려주면(원래는 res=[0]*n 이었는데 res[0]*(n+100)으로 늘려줬습니다), 답이 0으로만 출력됩니다. 혹시 어떤 부분이 잘못된 것일까요? 혼자 오래 고민해 보았지만 그럼에도 도저히 어떻게 손을 대야할 지 갈피가 잡히지 않아 질문을 남깁니다..! ㅠㅠ import sys sys.stdin=open('input.txt', 'rt') def DFS(x,s,time) : global xx if time>m: return if time==m : if sum(res) > xx: xx=sum(res) return else : for i in range(s,n+1) : res[x]=a[i-1][0] DFS(x+1, i+1, time+a[i-1][1]) res[x]=0 if __name__=='__main__' : a=[] n, m = map(int, input().split()) for _ in range(n) : a.append(list(map(int, input().split()))) xx=0 res=[0]*(n+100) DFS(0,0,0) print(xx)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
Judge.exe 파일이 실행이 안돼요
혹시 몰라 강사님이 사용하는 파이썬버전(https://www.python.org/downloads/release/python-353/)으로 설치하구 Path도 설치시에 잡았는데도 실행이 안돼요. 못찾고 있는 파일이 어떤건지 알 수 있을까요? 운영체제는 Windows10 64bit 입니다. 확인부탁드려요
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
BFS방식으로 풀었는데 틀렸다는데 확인을 해도 잘 모르겠습니다. 확인 부탁드려요.
다음과 같이 코드 작성하였는데요 답과는 다르게 나옵니다. 어느 부분인지 찾지를 못하겠어서 도움 요청드립니다. from collections import deque import sys sys.setrecursionlimit(10**6) dx=[-1,0,1,0] dy=[0,1,0,-1] n = int(input()) area = [list(map(int,input().split())) for _ in range(n)] Q = deque() res=0 for h in range(100): ch = [[0]*n for _ in range(n)] cnt = 0 for i in range(n): for j in range(n): if area[i][j]>h and ch[i][j]==0: ch[i][j]=1 cnt+=1 Q.append((i,j)) while Q: tmp = Q.popleft() for i in range(4): xx=tmp[0]+dx[i] yy=tmp[1]+dy[i] if 0<=xx<n and 0<=yy<n and ch[xx][yy]==0 and area[xx][yy]>h: ch[xx][yy]=1 Q.append((xx,yy)) res = max(res,cnt) if cnt == 0: break print(res)