월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
input에 있는 데이터 읽어오기
만약 띄어쓰기가 아닐때에는 어떻게 읽어오나요? 그리고 map함수는 어떨때쓰는것인지 잘 이해가 안갑니다ㅠㅠ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
DFS에서 찾아낸 res들을 메인함수에서 활용하고싶습니다.
# 중복 순열 구하기 def DFS(L): global cnt if L == m: cnt += 1 d.append(res) <- 이부분을 하면 모든 res가 추가된 리스트가 생성되지 않습니다 else: for i in range(1, n+1): if ch[i] == 0: ch[i] = 1 res[L] = i DFS(L+1) ch[i]= 0 # 상위 레벨로 갈때 다시 초기화해준다 if __name__ == "__main__": n, m = map(int, input().split()) res = [0] *n ch = [0] * (n+1) d = [] cnt = 0 DFS(0) DFS를 통해 구한 res들을 특정 list에 저장해서 메인 함수에서 사용하고 싶습니다. 방법이 있을까요 ?ㅠ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
수들의합 문제에서 혹시 연속적인합 말고 비 연속적인 합을 구하는 방법도 있을까요?
문제가 연속적으로 포인터를 옮겨가면서 하는데 비연속적인 수들의 합의 경우의수는 투 포인터로 옮겨가면서 하기 힘든것 같은데 요. 이때는 다른 방식으로 풀었던 경험이 있는데 기억이 나질 않네요. 결정 알고리즘(이분탐색)이용했던것 같습니다. 알려주시면 감사하겠습니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
그리디 알고리즘의 답
강의 잘보고있습니다 선생님, 그리디 알고리즘 문제풀이중 (회의실 배정 문제) 답이 최선의 답인줄 어떻게 확신할수 있을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이 문제를 스택으로 풀어보려 합니다.
안녕하세요 강의 잘 듣고 있습니다. 해당 문제를 스택을 사용하여 구하려고 합니다. 그런데 에러가 나는데.. 이유를 몰겠네요 ㅠ 제가 사용한 코드 남기겠습니다. n,m=map(int,input().split()) a=list(map(int,input().split())) b=[] cnt=0 for i in a: b.append(i) if sum(b)<m: continue elif sum(b)==m: b=b[-1] cnt+=1 elif sum(b)>m: if b[-1]==m: cnt+=1 b.clear() else: b=b[-1] print(cnt) b.append(i)에서 에러가 나는데 이유를 잘 모르겠습니다. 확인해주시면 감사하겠습니다...
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
min값에 대한 질문
제가 처음에 문제를 풀어봤을때 min = abs(a[0]-av)를 주어서 풀어봤는데 에러가 발생해서 선생님 강의를 보고 상수값을 넣으니 문제가 해결되었습니다. 그런데 min값에 abs(a[0]-av)를 넣으면 score is not define이라는 오류가 나는데 어떤것이 잘못된것일까요?
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
선생님...
알고리즘 강의 더 찍으실 생각 없으신가요... 설명 너무 조아용 강의 더 내주세요ㅜ 내시면...바로...사겠읍니다... 코테대비 문제풀이도 더 해주시고... 여기에서 안 다룬 알고리즘도 해주시고... 다 해주세요 흑흑흑
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
입력이 0인 경우는 어떻게 되나요?
안녕하세요~입력이 0 이면 바로 return 되어서 아무것도 출력이 안되는것 같습니다.if문으로 예외처리를 하는 것이 나을까요??아니면 함수내에서 print하지 않고 변수로 가져갈 방법은 없을까요?? 아래처럼 C언어의 포인터같은 느낌으로 하고 싶은데 문법이 틀리네요. 혹시 맞는 문법이 어떻게 될까요?? def pBin(self.res, n): if(n==0): return pBin(n//2) #print(n%2,end="") self.res *= 2 self.res += n%2 감사합니다~
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
test5는 10만개가 넘어갑니다.
안녕하세요. 직접만든 힙으로 아래와같이 하면 틀리고 100000 --> 110000으로 하면 맞습니다. in5.txt는 108,071줄 입니다. 감사합니다~ hp = minHeap() for _ in range(100000): n = int(In()) if(n == -1): break elif(n == 0): print(hp.pop()) else: hp.insert(n)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
플로이드 워샬과 다익스트라
안녕하세요 선생님, 플로이드 워샬 알고리즘을 공부하다 궁금한 점이 있어 질문드립니다. 플로이드 워샬은 모든 정점에서 모든 정점으로의 최단거리를 의미하고 다익스트라는 한 정점에서 나머지 정점으로 갈 때의 최단거리를 구하는것으로 알고있는데 그럼 다익스트라는 플로이드 워샬의 포함되는 알고리즘인지 궁금합니다. 또한 모든 다익스트라 문제가 플로이드 워샬로 풀리는지도 궁금합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션3의 '수들의 합' 문제 질문
저는 해당 문제를 풀 때, 현재 인덱스를 시작점으로 잡고 이후 인덱스 요소들을 연속적으로 더하는 식으로 풀었습니다. 이후 인덱스 요소들을 더하다가 조건의 값과 같아지면 count를 증가시킨 후 다음번의 인덱스를 시작점으로 설정하여 연속적으로 더하는 작업을 이어나갔고, 조건의 값보다 커지면 count를 증가시키지 않고 다음번의 인덱스를 시작점을 잡아 연속적으로 더하는 작업을 이어나갔습니다. 해당 방법으로 자동채점기를 돌려보니, 입력 원소들의 개수가 많아지면 time limit이 되는 것을 확인했습니다. 어떤 이유로 강사님이 풀이해주신 방법과 위 방법의 연산 속도차이가 나는지 궁금합니다. 저는 제 방법이 강사님이 풀이해주신 방법과 겉으로 보기에만 다를 뿐, 똑같은 방식이라 생각합니다. 자세한 답변 부탁드립니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
요거요
AbaAeCe baeeACAa 입력 자료가 이런 식이면 if sh[x] > 0: 에서 -1값도 참으로 나와서 yes가 출력 되는거 아닌가요? ㄹㄴㄹ 입ㄹㄱ ㅇㄹㅇㄹㅇㄴㄴ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
개선된 코드에서 질문
안녕하세요 수업 잘 듣고 있습니다 개선된 코드에서 질문있습니다. <개선된 코드> import sys #sys.stdin=open("in1.txt", "r") a=input() b=input() sH=dict() for x in a: sH[x]=sH.get(x, 0)+1 for x in b: sH[x]=sH.get(x, 0)-1 for x in a: if(sH.get(x)>0): print("NO") break; else: print("YES") if(sH.get(x)>0): -> 이부분에서, 왜 Sh.get(x)!=0으로 안쓰시고 >0 으로 쓰신건지 궁금합니다. 답을 낼때 차이가 없는 것은 알겠는데, 혹시 (!=)을 사용하면 시간이 오래걸리는 그런 문제가 있는건지 궁금해서 여쭤봅니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
최소 선
선생님 문제와 약간 반대로 선이 겹치지 않고 최소 몇 개의 선을 연결할 수 있는지는 어떻게 구할 수 있을까요? 감소하는 최대 수열만으로는 어떻게 잘 안되네요..
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제해결 차이
안녕하세요. 유익한 강의 잘 듣고있습니다. collections 의 Counter로 해결하는 방법과 효율성 차이가 있을까요? import syssys.stdin = open('input.txt', 'rt')from collections import Counterword1 = input()word2 = input()res = Counter(word1)-Counter(word2)if len(res) == 0: print('YES')else: print('NO')
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
혹시 이렇게 풀어도 되려나요..?
import sys sys.stdin=open('input.txt','rt') n=int(input()) a=list(map(int,input().split())) k=n b=[n] for i in range(-2,-n-1,-1): k-=1 b.insert(a[i],k) print(b) 뒤에서부터 접근하는 방식으로 풀어봤습니다.. 그리고 혹시나 해서 여쭤보는건데, k=n을 생략하고 그냥 쓰면 혹시 나중에 버그같은게 걸릴 수 있는지 궁금합니다. 마치 밑의 예시처럼요.. import sys sys.stdin=open('input.txt','rt') n=int(input()) a=list(map(int,input().split())) b=[n] for i in range(-2,-n-1,-1): n-=1 b.insert(a[i],n) print(b)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
질문 두가지 있습니다!
안녕하세요 강의 잘 듣고 있습니다! 1. 입력받을때, n=int(input()) meeting=[] for _ in range(n): s,e=map(int,input().split()) meeting.append((s,e)) 의 방식을 사용하신 이유가 있을까요...? 밑에 내용처럼 하면, 변수도 줄어들어 더 빠르게 처리할 수 있을것 같은데, 혹시 윗 내용처럼 변수를 입력하고 그 변수를 다시 배열에 집어넣으신 이유가 있는지 궁금합니다. n=int(input()) room=[] for _ in range(n): room.append(tuple(map(int,input().split()))) 2. 리스트가 아닌 튜플 구조를 사용하신 이유가 있을까요? 계속 리스트만 사용하다가 튜플을 사용하려니 뭔가 좀 어색해서 여쭤봅니다!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
lt설정에 관한 질문
안녕하세요? 강의 잘 보고 있습니다. 다름이아니라, lt와 rt를 설정할때, 각각 디스크 용량의 최대/최소로 알고있는데, 선생님께서는 lt를 1로 설정하였는데 그게 아니라 음악들의 최소값인 min(music)이 들어가야 맞지 않나요..? 아니라면 무엇을 제가 놓쳤는지 설명해주시면 감사하겠습니다..
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
ch 를 굳이 만들어야 하는 이유를 잘 모르겠습니다.
arr = [list(map(int,input().split())) for _ in range(10)] for i in range(10): if arr[9][i] == 2: start = i break def dfs(r,c): if r == 0: print(c) return if 0<= c-1 and arr[r][c-1] == 1: arr[r][c-1] = 2 dfs(r,c-1) elif c+1 < 10 and arr[r][c+1] == 1: arr[r][c+1] = 2 dfs(r,c+1) elif 0<= r-1 and arr[r-1][c] == 1: arr[r-1][c] = 2 dfs(r-1,c) dfs(9,start) 안녕하세요 선생님 질문있어서 글 남깁니다! 선생님의 코드처럼 ch를 만드는 경우 메모리를 더 잡아먹을 것 같은데, 방문한 board의 값을 1이 아닌 값으로 바꾸면 메모리적으로 더 효율적이지 않을까요? 혹시 문제가 있을까요
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
4,5번 시간초과
import queue dr = [0,-1,0,1] dc = [-1,0,1,0] m,n = map(int,input().split()) arr = [list(map(int,input().split())) for _ in range(n)] q = queue.Queue() res = 0 for i in range(n): for j in range(m): if arr[i][j] == 1: q.put((i,j)) while q.qsize()>0: now = q.get() for k in range(4): nr = now[0]+dr[k] nc = now[1]+dc[k] if 0<= nr < n and 0<= nc < m and arr[nr][nc] == 0: arr[nr][nc] = arr[now[0]][now[1]] + 1 q.put((nr,nc)) c = False for i in range(n): for j in range(m): if arr[i][j] == 0: c = True break; else: res = max(res, arr[i][j]) if c == True: print(-1) else: print(res-1) 4번 5번에서 자꾸 시간초과가 뜨는데 컴퓨터 사양 문제일까요? 직접 cmd에서 구동시켜보면 답은 맞습니다..