월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
채점 관련 질문
위와 같은 에러가 뜨며 채점파일이 실행되지 않습니다. 어떻게 해결해야 할까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
input 관련 문의
input.txt 파일과 input() 이 부분이 어떻게 연결되는지 잘 이해가 안되네요. input.txt은 파일이고, input()은 함수인데, input.txt를 open에서 읽은 다음에 따로 변수에 담지 않았는데, 어떻게 input()함수가 input.txt로 연결이 되는걸까요? 답변에 미리 감사드립니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
가장높은탑쌓기 질문입니다
강의에서는 res = bricks[0][1]로 하고 res = max(res,dy[i]) 로 처리하였는데, res = 0 으로 하고 if dy[i] > res : res = dy[i] 로 해도 같은 의미 코드인거죠? 전 강의문제 코드 참조해서 풀어서 통과되었는데, 혹시 운좋게 맞은건가해서 질문드립니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
in2 엔터가 안되어 있어서 마지막 input이 작동 안합니다.
자꾸 검사가 안되서 왜 그런가 했더니 엔터가 안쳐져 있어서 입력이 안되더라구요. 엔터한번 입력하고 저장하고 다시 프로그램 돌려보니 잘 채점됩니다. 저만 그런건지는 모르겠지만 한번 체크해주세요!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
section6. 합이 같은 부분집합 질문입니다
왼왼쪽과 같이 main을 써서 테스트를 해보면 정답이 나오는데 오른쪽과 같이 main을 쓰지 않으면 네번째 테스트케이스에서 오답이라고 출력이 됩니다. 제가 보기에는 같은 코드 같은데 왜 그런지 알 수 있을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
정렬이 아닌 넓이, 무게를 비교하여 풀수는 없을까요?
선생님 안녕하세요. 강의를 통해 많이 배우고 있습니다. 좋은 강의 감사합니다. 혹시 정렬을 통해 비교조건을 1개만 남기는게 아닌 넓이, 무게를 모두 사용하여 풀수는 없을까요? 넓이, 무게를 모두 사용해서 풀려고하니 5 14 5 18 12 10 9 13 12 12 # 오류 원인 케이스 5+12+10 으로 블록쌓기 불가 5 6 19 8 13 7 위와 같은 케이스에서 최대값 : 5+12+10+13 = 40 이 아닌 5+12+7 = 30 으로 오류가 발생합니다.. (그동안 쌓은 블록 중간에 다른 블록을 넣는것에 실패) 혹시 몰라 코드도 첨부드리지만 풀이까지는 무리한 질문 같아, 넓이 무게를 모두사용해서 풀 수 있는 방법 조언 주시면 감사하겠습니다. import sys sys.stdin=open("input.txt", "r") if __name__=="__main__": N = int(input()) b = [] for _ in range(N): b.append(tuple(map(int, input().split()))) dy = [0]*N for idx in range(N): max_h = b[idx][1] # v (area, height, weight) for i, v in enumerate(b[:idx]): # 넓이, 무게 조건 체크 if v[0] > b[idx][0] and v[2] > b[idx][2]: if (dy[i] + b[idx][1]) > max_h: max_h = dy[i] + b[idx][1] dy[idx] = max_h print(max(dy))
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
set()함수를 왜 쓰는지 이해가 안됩니다 ㅜㅜ
안녕하세요 강사님 강의 잘 듣고 있습니다. 코딩공부를 시작한지 별로 안되서 이상한것에 이해가 잘 안됩니다... 이해가 안되는 부분은 왜 굳이 set() 함수를 써야 하는지 입니다. (리스트를 써도 될거 같은데) n, k = map(int, input().split()) a = list(map(int, input().split())) res=[] for i in range(n): for j in range(i+1, n): for m in range(j+1, n): res.append(a[i]+a[j]+a[m]) res.sort(reverse=True) print(res[k-1]) 여기서 강의에서 중복 카운팅을 막기 위해서 set() 집합을 쓴다고 하셨는데 그게 이해가 안됩니다.. 10개의 카드에서 3개를 뽑아서 나오는 모든 경우의 수를 res 변수에 넣는걸로 알고 있는데 그러면 3개를 뽑아서 합한 결과가 res 변수에 들어가는데 이때 값이 똑같은게 나오면 중복이 안되게 막는다는걸로 들었습니다. 근데 굳이 res변수에 들어가는 중복 값을 왜 막아야 하는지 모르겠습니다.. 10개의 카드에서 3개를 뽑고 다른 경우에서 3개를 뽑았는데 우연히 중복값이 나오면 그건 상관이 없는거 아닌가요? 문제에서 "같은 숫자의 카드가 여러개 있을 수 있다"란 말은 그냥 1부터 100까지의 숫자가 랜덤으로 있다했지만 1이 10개 있을 수도 있고 그런말이라서 위의 경우랑은 별개인거 같습니다. 말이 좀 횡설수설한데 제가 이해 안되고 있는 부분이 어디인지 알려주십시오..! 만약 제 글을 이해 못하시겠으면 다시 써보겠습니다...... ㅠㅠㅠ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
프린트와 강의의 답이 다릅니다.
프린트에 답은 74, 7인데 강의 답은 74,9여서 질문드립니다.
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이분검색 문제 질문입니다
sort를 한 다음에 a.index(m)을 하면 해결할 수 있는데 이분검색으로 하는 습관을 들이는 것이 앞으로 문제를 풀어나가는데 도움이 되는건가요?
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
set을 사용해서 풀어도 괜찮을까요?
안녕하세요. 선생님, 유익한 강의 정말 잘 듣고 있습니다:) 다름이 아니라, 이 문제를 set의 차집합을 이용해서 해결을 했는데 이렇게 풀어도 되는지 궁금해서 질문을 남깁니다. n이 커져도 시간복잡도에서 딕셔너리와 큰 차이가 없을까요? n = int(input()) words = [input() for _ in range(n)] finds = [input() for _ in range(n-1)] print(*(set(words) - set(finds)))
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
res의 scope 질문입니다.
res의 스코프가 if안에서만 쓰이는 변수가 되는게 아닌가요? 그전에 선언을 하지 않았는데 for문을 나오고서도 쓰여지는 이유가 궁금합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
3중 for문 대신에 combinations 써도 되지 않나요?
저는 combinations 쓰고 sum() not in list일때 sum으로 묶어서 해줬었는데.. 맞을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
다음과 같이 풀어보았는데 상태체크배열이 안 변하는것 같습니다
제가 선언한 ch배열이 안바뀌고있는것같네요 혹시 어디가 문제인지 짚어주실수있으신가요? (0의 개수를 세는게 되버리네요...) def DFS(x,y): ch[x][y] = 1 for i in range(4): tx = x + dx[i] ty = y + dy[i] if 0<= tx < n and 0 <= ty < n and a[tx][ty] == 0: DFS(tx, ty) dx = [-1, 0, 1, 0] # 방향 x축 dy = [0, 1, 0, -1] # 방향 y축 n = 5 a = [ [6,8,2,6,2], [3,2,3,4,6], [6,7,3,3,2], [7,2,5,3,6], [8,9,5,2,7] ] max_top = 0 min_top = 300 for i in range(n): for j in range(n): if a[i][j] > max_top: max_top = a[i][j] if a[i][j] < min_top: min_top = a[i][j] print(max_top, min_top) for i in range(min_top, max_top): cnt = 0 ch = [[0]*n for _ in range(n)] for j in range(n): for z in range(n): if a[j][z] <= i: ch[j][z] = 1 print(f'=========={i}==========') for k in ch: print(k) print() for j in range(n): for z in range(n): if ch[j][z] == 0: cnt += 1 DFS(j,z) print('ISLAND:', cnt) """출력결과 9 2 ==========2========== [0, 0, 1, 0, 1] [0, 1, 0, 0, 0] [0, 0, 0, 0, 1] [0, 1, 0, 0, 0] [0, 0, 0, 1, 0] ISLAND: 19 ==========3========== [0, 0, 1, 0, 1] [1, 1, 1, 0, 0] [0, 0, 1, 1, 1] [0, 1, 0, 1, 0] [0, 0, 0, 1, 0] ISLAND: 14 ==========4========== [0, 0, 1, 0, 1] [1, 1, 1, 1, 0] [0, 0, 1, 1, 1] [0, 1, 0, 1, 0] [0, 0, 0, 1, 0] ISLAND: 13 ==========5========== [0, 0, 1, 0, 1] [1, 1, 1, 1, 0] [0, 0, 1, 1, 1] [0, 1, 1, 1, 0] [0, 0, 1, 1, 0] ISLAND: 11 ==========6========== [1, 0, 1, 1, 1] [1, 1, 1, 1, 1] [1, 0, 1, 1, 1] [0, 1, 1, 1, 1] [0, 0, 1, 1, 0] ISLAND: 6 ==========7========== [1, 0, 1, 1, 1] [1, 1, 1, 1, 1] [1, 1, 1, 1, 1] [1, 1, 1, 1, 1] [0, 0, 1, 1, 1] ISLAND: 3 ==========8========== [1, 1, 1, 1, 1] [1, 1, 1, 1, 1] [1, 1, 1, 1, 1] [1, 1, 1, 1, 1] [1, 0, 1, 1, 1] ISLAND: 1 """
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
혹시 이런방식으로 풀어도 괜찮을까요?
선생님께선 bottom-up방식이셨네요... 전 처음에풀때 top-down방식으로 한번 해보았습니다. 혹시 이런방식도 가능한지 여쭤보고싶습니다~ def DFS(x,y): if x == n-1: if a[x][y] == 2: print(sp) return else: cnt = 0 a[x][y] = 0 // 갈림길 조정 - 만약에 아래로뻗는 방향밖에없다면 그대로 좌우아래 검색, 만약 아래랑 좌우중 한개가 같이있을경우 무조건 좌우만 검색하게끔 for j in range(3): tx = x+dx[j] ty = y+dy[j] if 0<=tx<n and 0<=ty<n and (a[tx][ty] == 1 or a[tx][ty] == 2): cnt += 1 if cnt == 1: loop = 3 else: loop = 2 for j in range(loop): tx = x+dx[j] ty = y+dy[j] if 0<=tx<n and 0<=ty<n and (a[tx][ty] == 1 or a[tx][ty] == 2): DFS(tx, ty) a[tx][ty] = 1 for z in a: print(z) print() n = 10 a = [ [1,0,1,0,0,1,0,1,0,1], [1,0,1,1,1,1,0,1,0,1], [1,0,1,0,0,1,0,1,0,1], [1,0,1,0,0,1,0,1,1,1], [1,0,1,0,0,1,0,1,0,1], [1,0,1,1,1,1,0,1,0,1], [1,0,1,0,0,1,0,1,1,1], [1,1,1,0,0,1,0,1,0,1], [1,0,1,0,0,1,1,1,0,1], [1,0,1,0,0,2,0,1,0,1] ] dx = [0, 0, 1] dy = [1, -1, 0] sp = 0 for i in range(len(a[0])): if a[0][i] == 1: sp = i print(sp) a[0][i] = 0 DFS(0,i)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀면 어디가 잘못된건지 잘모르겠습니다...
n = 100 m = 100 s = '3 3 1 4 5 2 2 5 2 1 2 2 1 1 4 1 4 3 3 5 1 5 1 3 4 5 4 5 2 4 2 1 1 4 2 1 5 3 1 3 1 1 1 2 4 4 5 5 5 5 3 2 5 5 3 2 3 4 1 3 3 4 5 1 3 1 3 2 3 1 2 3 2 5 5 4 2 3 1 2 3 2 4 5 2 4 4 4 4 3 1 5 2 2 1 3 2 5 4 1' a = list(map(int, s.split())) lt = 0 rt = 1 cnt = 0 while(True): temp = sum(a[lt:rt]) if lt >= n: break elif rt >= n: lt += 1 rt = lt + 1 elif temp < m: rt += 1 elif temp >= m: if temp == m: cnt += 1 lt += 1 rt = lt + 1 print(cnt) 혹시 이런방식으로 구현을 하면 어느부분에서 틀린걸까요ㅠㅠ 몇가지 케이스에선 정답이 나오는데 위의 케이스에선 오류가납니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 체크리스트 배열(ch)를 만드는 생각을 잘못하겠는데 연습만이 정답이겠죠?
코딩테스트가 항상 무섭습니다 ㅠ 항상 오래고민하다가 도저히 생각이안나서 답을보게되는데요. 막상 답을보면 "어떻게 이런생각을 하지..." 라면서 되뇌입니다. 결국엔 연습을 많이해야겠죠?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
조합만들기처럼 res 리스트를 만들어서
안녕하세요 저는 sum을 인자로 두지않고, 조합만들기처럼 res 리스트를 만들어서 진행했습니다. import sys sys.stdin = open("input.txt", 'r') def dfs(L, s): global cnt if L==k and sum(res) % m ==0: cnt+=1 else: for i in range(s, n): res[L] = num[i] dfs(L+1, i+1) if __name__ == "__main__": n, k = map(int, input().split()) num = list(map(int, input().split())) m = int(input()) cnt = 0 res = [0]*(k) dfs(0,0) print(cnt) 10. 조합만들기에서 총합 개념만 조금 더해서 만든 코든데 계속 IndexError: list assignment index out of range가 납니다.. 왜 그런지 모르겠어요..
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
return
L은 dfs를 진행할수록 증가하기 때문에 만약 L에서 sum이 m인 부분을 찾았으면 더 진행할 필요없이 L이 최소라고 생각해서 dfs함수에서 if L>=res: return 을 생략하고 def DFS(L, sum): global res if sum>m: return if sum==m: if L<res: res=L return # else: for i in range(n): DFS(L+1, sum+a[i]) sum이 m을 되자마자 return 하는게 나을거라 생각했는데 제 생각과는 달리 더 오래걸리더라구요. 왜 그런지 이유를 모르겠어요.
- 파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
질문
삭제된 글입니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션6. 9 수열 추측하기
제가 작성한 코드를 이용해서 문제를 해결해보려고 했는데, exit_code_1이 떠서 제가 잘 못 쓴줄 알고, 강사님이 작성하신 소스 코드로 복사 붙여넣기 해보기도 했지만 exit_code_1가 나옵니다. 뭐가 문제인지 잘 모르겠습니다. 출력 값은 정답 값으로 잘 나오지만, 채점 프로그램을 통해 채점을 해보면 exit_code_1이라는 문제가 생깁니다! 혹시 제 컴퓨터 해당 Judge(Python).exe 문제인가 싶어서 다른 Judge(Python).exe 을 이용하여 다른 문제를 체점해봤지만 다른 문제는 정상적으로 Success가 잘 뜹니다.