Thumbnail
BEST 개발 ・ 프로그래밍 프로그래밍 언어
파이썬 알고리즘 문제풀이 (코딩테스트 대비)
(4.8)
48개의 수강평 ∙ 1634명의 수강생

66,000원

지식공유자 : 김태원
총 123개 수업˙총 26시간 38분
평생 무제한 수강
수료증 발급 강의
초급 대상
내 목록 추가 932 공유
junior0614 프로필

오류 부분 junior0614 8시간 전
안녕하세요! 선생님의 강의 들으며 많은 도움 얻고 있습니다 ^^ 다름이 아니라 제가 짠 코드에서 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)

0
youngjin song (디즈니인형) 프로필

Judge.exe 파일이 실행이 안돼요 youngjin song (디즈니인형) 1일 전
혹시 몰라 강사님이 사용하는 파이썬버전(https://www.python.org/downloads/release/python-353/)으로 설치하구 Path도 설치시에 잡았는데도 실행이 안돼요. 못찾고 있는 파일이 어떤건지 알 수 있을까요? 운영체제는 Windows10 64bit 입니다. 확인부탁드려요

2
mc - 프로필

BFS방식으로 풀었는데 틀렸다는데 확인을 해도 잘 모르겠습니다. 확인 부탁드려요. mc - 1일 전
다음과 같이 코드 작성하였는데요 답과는 다르게 나옵니다. 어느 부분인지 찾지를 못하겠어서 도움 요청드립니다. 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)

2
정혜원 프로필

아나그램 개선 전 문제풀이 오류 정혜원 1일 전
str1 = input() str2 = input() dict1 = {} dict2 = {} for x in str1:     dict1[x] = dict1.get(x, 0) + 1 for x in str2:     dict2[x] = dict2.get(x, 0) + 1 for i in dict1.keys():     if i in dict2.keys():         if dict1[i] != dict2[i]:             print('NO')             break     else:         print('NO')         break else:     print('YES') 이 코드는 강의에 있는 개선 전의 딕셔너리 풀이 코드입니다. 개선의 문제가 아니라 이 코드 자체에 오류가 있는 거 같아요! str1이 AaBb이거 str2가 AaBbCc이면 답이 'NO' 여야하는데 'YES'로 나와요. 즉 dic1이 dict2에 포함관계이면 무조건 'YES'가 나오는 것 같습니다

1
phillnfeel 프로필

자리수의 합이 같은 경우는 고려를 안해주신거같습니다. phillnfeel 1일 전
채점 폴더의 input파일을보면 자릿수의 합이 같은 숫자들이 여러개 보이는데 그냥 그런건 고려안하고 먼저 나온 숫자가 모두 답이 되도록 설정해두셨네요..자릿수의 합이 같은 경우 먼저 나온 숫자를 출력한다고 문제를 수정해야하지 않나 싶네요.

1
코딩왕 프로필

내장 함수를 이용하는 건 별로인가요? 코딩왕 2일 전
for i in range(1,n+1): for j in range(1, n+1): if(a[i][j] > max(a[i-1][j], a[i][j-1], a[i+1][j], a[i][j+1])): cnt+=1이런 식으로 푸는 건 별로인가요?

1
코딩왕 프로필

제가 스스로 풀어봤는데요 코딩왕 2일 전
import syssys.stdin = open('input.txt', 'rt')n = int(input())a = [list(map(int, input().split())) for _ in range(n)]m = int(input())for _ in range(m): b, c, d = map(int, input().split()) tmp = 0 k = list() for i in range(n): if (c == 0): l = i-d else: l = i+d if (l < 0): l += n elif (l >= n): l -= n #print(l , end=" ") k.append(a[b-1][l]) print() a[b-1] = kprint(a)s, c = 0, nsum = 0for i in range(n): for j in range(s, c): sum += a[i][j] if (i < n // 2): s += 1 c -= 1 else: s -= 1 c += 1print(sum)합구하는건 괜찮은데검사 1,2,5는 clear하는데3,4에서 range오류가 나타나네요

1
Lebron James 프로필

맥용 강의자료 Lebron James 2일 전
현재 맥북 쓰고 있습니다. 강의자료 다운 받았는데 글자가 깨져있길래 이전 QnA 들 검색해보니 맥용 강의자료와 윈도우 용이 나누어져있는거 같던데 맥용은 어디서 다운받죠?? 

3
코딩왕 프로필

스택으로 풀어봤는데요 코딩왕 3일 전
import syssys.stdin=open('input.txt', 'rt')n, m = map(int, input().split())a = list(map(int, input().split()))cnt = 0b = list()for i in a: b.append(i) sum1 = sum(b) if(sum1==m): cnt+=1 b.pop(0) elif(sum1>m): while(sum(b)>m): b.pop(0) if(sum(b)==m): cnt+=1print(cnt)스택으로 풀어봤는데요. 강사님의 알고리즘이 훨씬 더 좋아보이네요

1
화니 프로필

역수열 문제 관련 질문 화니 3일 전
안녕하세요 강사님 역수열 문제를 풀다가 제 코드가 논리상에 오류가 있는지와 효율성에 대해 알고 싶어서 질문드립니다. 저는 이전 강의에서 강사님께서 알려주신 deque를 이용해서 문제를 풀었습니다. deque를 선언하고 큰 수부터 내림차순으로 위치 배치를 수행했습니다. 특정 숫자와 특정숫자보다 큰 수의  갯수는 인덱스로 deque의 insert 연산을 이용하였는데요 deque의 insert연산을 사용하는 알고리즘이 정적 크기 list를 선언하고 배치하는 알고리즘과 효율성이 얼마나 차이가 나는지 알고 싶습니다. 또 제 코드의 논리가 맞는지도 알고 싶습니다 import sys from collections import deque def solution(n, lst): dq = deque() for i in range(n, 0, -1): dq.insert(lst.pop(),i) return " ".join(list(map(str, dq))) if __name__ == "__main__": sys.stdin = open("input9.txt", "r") n = int(input()) lst = list(map(int, input().split())) answer = solution(n, lst) print(answer)

1
조영규 프로필

조합 조영규 4일 전
조합처럼 이렇게 풀었는데 in1,in2까지는 정답이 잘 맞는데 그 이후에는 답이 틀리게 나옵니다. 어떤 부분이 잘못되었을까요? def DFS(s, time, score):     global res     if time>m :         if score-a[s-1][0]>res:             # print("score %d" %(score-a[s-1][0]))             res=score-a[s-1][0]     else:         for i in range(s, n):             DFS(i+1,time+a[i][1],score+a[i][0]) n, m=map(int, input().split()) a=[] for i in range(n):     x1,x2 = map(int, input().split())     a.append((x1,x2)) res=0 DFS(0,0,0) print(res)

1
코딩의신 프로필

이분탐색(결정알고리즘) & 그리디 알고리즘 - 6.씨름선수(그리디) 관련 질문 코딩의신 4일 전
안녕하세요 저는 강사님처럼 max값 형태로 해당 문제를 풀지않고,  이중 for문을 이용해, 나보다 키가 큰 사람들 보다 몸무게가 더 무거워야한다 로 접근하여 풀었습니다 그때  아래와같이 if all() : 구문을 이용하였는데요 import sys sys.stdin = open("input.txt","rt") n = int(input()) a = list() for _ in range(n) : key,weight = map(int,input().split()) a.append( (key, weight) ) # key 순서로 sort a.sort() cnt = 0 length = len(a) for i in range(length) : spec = a[i] weight = spec[1] if all( weight > a[j][1] for j in range( i+1, length) ) : print(spec) cnt += 1 print(cnt) 이 때, all() 구문에 대해 문의드립니다  j값의 range가 (i+1, length) 이기 때문에,  a 배열의 마지막 인덱스 (입력예제1 예 따르면 i = 4일때)는 range(5,5) 가 되어 해당 all() 구문을 타지않는다(false)고 생각했습니다. 따라서 , 초기 cnt를 1로 주고 시작을 했었는데요 제 예상과달리 i= 4일때도 all()구문을 타더군요 간단히 테스트 해보고자 아래와 같은 예제를 만들어봤는데도 i=4일때 타더군요 a=[1,2,3,4,5] temp = 4 for i in range(5) : if all( temp < j for j in range(i+1,5) ) : print(a[i]) 제가 all 구문을 잘못 이해한것인지.. 왜 range(5,5)일때도 all() 구문의 값이 true가 되는건가요?  

1
조영규 프로필

이런 식으로 짜도 괜찮을까요? 조영규 4일 전
n,m = map(int, input().split()) gp=[[0]*n for _ in range(n)] for _ in range(m):     a,b = map(int, input().split())     gp[a-1][b-1]=1 def DFS(L):   global cnt   if res[L]==n:     cnt+=1   else:     for i,x in enumerate(gp[res[L]-1]):       if x==1 and tmp[i]==0:         res.append(i+1)         tmp[i]=1         DFS(L+1)         res.pop()         tmp[i]=0 cnt=0 res=[1] tmp=[0]*n tmp[0]=1 DFS(0) print(cnt)

1
sja9707 프로필

자릿수의 합 sja9707 4일 전
자릿수의 합 문제에서 자릿수의 합을 구할 때 아래와 같이 함수를 구하는데, 이때  while 문 대신 if 문으로 작성 했을 시 답이 다른 이유에 대해서 알고 싶습니다. def digit_sum(x): sum=0 while x>0: sum+=x%10 x=x//10 return sum

1
강구민 프로필

강사님 질문있습니다 강구민 5일 전
예시에서 정답이 6인데 저는 5가 나오고 점수도 100점이뜨는데 뭐가 잘못된걸까요? 새해부터 강의듣고 문제풀기 시작했는데 기본과 팁들을 꼼꼼히 전수해주셔서 감사합니다!

1

66,000원

내 목록 추가 932 공유
지식공유자 : 김태원
총 123개 수업˙총 26시간 38분
평생 무제한 수강
수료증 발급 강의
초급 대상
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스