월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
Time Limit Exceed 관련 질문드립니다.
아래와 같이 코드를 작성했는데 강사님의 강의와 다른 점은 set대신 list를 사용하고 L == K일때 , 정답으로 가능한 리스트 안에 현재 추의 sum이 없으면 추가한다는 조건으로 if문을 작성해주었는데 Case#5에서 계속 Time Limit이 뜹니다. 이전 질문에서 리스트와 set에 원소 할당할 때 시간복잡도 차이가 없다고 하셨는데 if문을 한줄에 여러 조건을 추가할 수록 식나이 추가되는걸까요? import sys input = sys.stdin.readline K = int(input()) weights = list(map(int,input().split())) possible = [] max = sum(weights) def dfs(L,sum): if L == K: if 0 < sum <= max and sum not in possible: possible.append(sum) return dfs(L+1,sum+weights[L]) dfs(L+1,sum-weights[L]) dfs(L+1,sum) dfs(0,0) print(max-len(possible))
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
아니 왜 갑자기 엣지 지원이 안되는건가요
크롬안쓰는 엣지유저로서 맘이 아픕니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
왜 종료 되는지 모르겠어요
if문에서 돌면 if문에 DFS(v -1) 처럼 돌아가라는 느낌으로 작성해주어야 할 거 같은데 왜 종료 되어서 다음 내용이 시작 되는 건가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
000123 -> 123 이 되게하는 방법 중에서요
저같은 경우 isdigit 로 숫자만 추출한 다음 그냥 int(x) 이렇게 통째로 형변환 시키면 알아서 자연수로 만들어주니까 이런식으로 했는데... 이렇게 해도 괜찮을까요? 앞서 봤던 슬라이싱을 사용한 회문 검사처럼 면접관이 보기에 꼼수를 쓴 것 같다라는 평가가 나올 것 같아서 약간 걱정되네요
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
파이썬에서 전역변수는 어떻게 쓰나요?
import syssys.stdin = open("input.txt", "rt")res = '' def dfs(x): if x == 0: return div, mod = divmod(x, 2) dfs(div) res+=str(mod) if __name__ == "__main__": n = int(input()) dfs(n) print(res) 저는 위처럼 코드를 짰는데요, res=''로 처음에 초기화하고, 여기에 나머지 값을 str으로 바꿔서 더해주는 방식인데, res가 초기화되지 않았다고 나오네요.. 맨 상단에 두면 전역변수로 두는게 아닌가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션3 7.사과나무 문제 이렇게 풀면 왜 정답이 안 나올까요?
이렇게만 봤을 땐 맞는 것 같은데 어느 부분이 잘못 되어 답이 안 나오는지 모르겠습니다. n = int(input()) a = [list(map(int, input().split())) for _ in range(n)] res = 0 s = e = n//2 for i in range(n): s = abs((s-i)) e = n-s res += sum(a[i][s:e]) print(res)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 될까요??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 import sys sys.stdin=open("pythonalgorithm/섹션 2/9. 주사위 게임/in1.txt", "rt") n=int(input()) tot=[] for _ in range(n): tmp=list(map(int,input().split())) tmp.sort() a, b, c = tmp if a==b==c: tot.append(10000+a*1000) elif a==b or a==c: tot.append(1000+a*100) elif b==c: tot.append(1000+b*100) else: tot.append(c*100) print(max(tot)) 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
리스트를 이용한 해쉬 방법
저도 반복문안에 sort가 있는 것을 보고 비효율적이지 않을까 싶어 커뮤니티를 눌러 보았더니 교수님께서 리스트를 이용한 해쉬 방법을 설명해 놓으셨더라고요! 그런데 몇번을 읽어봐도 잘 이해가 되지 않습니다 ㅠㅠ 혹시 설명 부탁드려도 괜찮을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
답이 계속 16이 나와서 질문드립니다...
안녕하세요 교수님 강의 잘 보고 있습니다. 다름이 아니라 해주신대로 혼자 해보았는데 계속 답이 16이 나와요 ㅠㅠ 강의랑 비교해서 다른 곳을 못찾겠는데 어디가 잘못된걸까요? ㅠㅠ import sysfrom tempfile import tempdirsys.stdin = open("input.txt","rt") n,m = map(int,input().split())li = list(map(int,input().split())) lt = 1rt = sum(li) def Count(capa): cd = 1 sum = 0 for x in li: if sum + x > capa: cd += 1 sum = x else: sum += x return cd while lt <= rt: mid = (lt + rt) // 2 if Count(mid) <= m : res = mid rt = mid -1 else: lt = mid + 1 print(mid)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
자동 채점기 엉터리
걍 혼자 해보고 빠르게 백준 넘어가는게 나음
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
제가 직접 작성한 코드에서는 중복된 결과가 나오는데 해결방법을 모르겠습니다.
강의코드와는 다르지만 저는 여기서 왜 중복결과가 나오는지 어떻게 중복을 줄여야할 지 모르겠습니다.... t = int(input()) k = int(input()) p = [] n = [] cnt = 0 tmp = [] for i in range(k): a,b = map(int,input().split()) p.append(a) n.append(b) def DFS(i,sum): global cnt global tmp if sum > t: return if i == k: if sum == t: cnt += 1 print(tmp) else: if n[i] > 0: n[i] -= 1 tmp.append(p[i]) DFS(i+1,sum+p[i]) DFS(i,sum+p[i]) n[i] += 1 tmp.pop() DFS(i+1,sum) DFS(0,0) print(cnt) 이렇게 실행하면 이렇게 나옵니다. 해결방법이 필요합니다..
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
변수 res 초기화 관련 질문입니다.
안녕하세요 선생님 강의를 통해 하나씩 이해하며 배워가고 있는 학생입니다. 혼자 코드를 작성했을 때 res, max 둘 다 초기화를 해주고 for문을 돌았습니다. 그런데 선생님 코드를 보니 res는 초기화를 안해줘도 not defined 에러가 안 떠서 왜 그런지 질문 남깁니다. max는 초기화해야하고 res는 안 해줘도 에러가 안 나는 이유는 무엇인가요? 변수는 항상 초기화가 먼저 필요하다고 생각하고 있었는데 어떤 경우에 변수 초기화가 필요없는건가요? 감사합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
idle 질문
안녕하세요 강사님. 혹시 idle를 VSCode로 해서 연습해도 문제 없을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
침몰하는 타이타닉 코드
이렇게 작성했는데 상관없나요? N, M = map(int, input().split()) weight = list(map(int, input().split())) weight.sort() cnt = 0 p1 = 0 p2 = N - 1 while p1 < p2: p2 = len(weight) - 1 if weight[p1] + weight[p2] > M: weight.pop() cnt += 1 else: weight.pop(0) weight.pop() cnt += 1 # 한 명만 남은 경우 > 그대로 구명보트에 태워 구조 if len(weight) == 1: cnt += 1 break # 짝이 맞아서 리스트에 아무것도 없는 경우 > break문 사용 if weight == []: break print(cnt)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
회의실 배정
이렇게 코드를 작성했는데 이것도 맞는 답인가요? n = int(input()) a_lst = [] b_lst = [] for i in range(n): total = 0 a, b = map(int, input().split()) a_lst.append(a) b_lst.append(b) for j in range(0, len(b_lst)): for k in range(0, len(a_lst)): if b_lst[j] == a_lst[k]: total += 1 largest = total if total > largest: total = largest print(total)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
while문안에 if문 조건설정시 기준을 잘 모르겠습니다.
혼자 풀면서 처음에 이런식으로 작성해서 답이 나왔습니다. # 정답코드 if putt(mid) >= c: res = mid lt = mid + 1 else : rt = mid - 1 # 왜안되는지 모르는 코드 if putt(mid) <= c: res = mid rt = mid - 1 else : lt = mid + 1 근데 putt(mid)가 c보다 작을 때 rt를 변화시켜주는 것, 즉 마구간의 일정거리를 더 가깝게 하는 것으로 변화시켜간다면 어떻게 될지 궁금해서 아래와 같이 코드를 작성해봤는데 답이 2가 나왔습니다. 제가 지금 생각하기로는 위 코드와 아래코드의 차이는 1. 거리가 좁아서 cnt가 c보다 클 때 lt를 조정시켜 점점 크게 만들어주는 방법 2. 거리가 넓어서 cnt가 c보다 작을 때 rt를 조정시켜 점점 작게 만들어주는 방법 이 두가지 인데 이 두가지를 선택하는 기준과 왜 답이 다른지 잘 모르겠습니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
알고리즘
안녕하세요? 알고리즘 문제가 봐도 딱 생각이 안들때는 어떻게 해야 할까요?ㅠㅠ dfs 부분집합 구하기만 봐도 생각을 못하겠어요
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
stack.pop 을 공통으로 먼저하면 위험하지않을까요?
input.txt 를 기준으로 stack.pop() 을 공통으로 먼저하게 된다면 i 가 1 일때 pop 하기 이전에 stack 에는 '(' 하나만 있습니다. 그런데 pop 을 먼저 하고서 s[i-1] 로 접근하게 된다면 stack 이 비어있기 때문에 에러가 나야하지 않나 싶습니다. 물론 강의에서는 에러가 나지 않았기 때문에 이해가 잘 가지 않네요. 실제로 제가 짠 코드에서는 s[i-1] 로 접근하는게 아니라 그냥 s[-1] 로 접근하고 있는데 에러가 발생하네요. 다른 코드는 동일합니다. 아래는 저의 코드입니다. for x in line : if x == '(' : stack.append(x) else : stack.pop() if stack[-1] == '(' : piecesCnt += len(stack) else : piecesCnt += 1 print(piecesCnt)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
반례가 있을 까요?
이분 탐색 및 결정알고리즘은 lt와 rt가 주어지고 범위가 보일 때 사용하는지를 생각하면서 풀어야 겠다는 걸 알겠는데 그리디는 그냥 느낌 오는대로 막 풀었는데 어떤 생각을 해야 하나요? 그리고 밑에 제가 답지 안보고 푼 정답인데 반례가 있을 까요?? a = int(input())b = list(map(int, input().split()))c = [0] * afor i in range(a): count = -1 for t in range(a): if c[t] == 0: count += 1 if b[i] == count: if c[t] == 0: c[t] = i + 1 break else: t += 1for k in range(a): if c[k] == 0: c[k] = aprint(c)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
등산경로 코드 중에..
여기서 for문안에 if 문돌 때 논리연산항 순서를 바꾸면 제대로 출력이 안됩니다. 제가 각각괄호를 묶고 다 해봤는데도 정상출력이 안돼서 질문남겨요.. def DFS(x,y): global cnt if x == ex and y ==ey: cnt +=1 else : for k in range(4): xx = dx[k]+x yy=dy[k]+y if 0<=xx<n and 0<=yy<n and ch[xx][yy]==0 and board[xx][yy]>board[x][y] : ch[xx][yy]=1 DFS(xx,yy) ch[xx][yy]=0 노란색을 친 부분 순서를 바꾸면, 제대로 출력이 안됩니다. 제가 썼던 코드는 if 0<=xx<n and 0<=yy<n and board[xx][yy]>board[x][y] and ch[xx][yy]==0: 입니다. 연상 항의 순서만 바꿔도 오류가 납니다. 이유가 뭘까요?