월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
8번문제와 차이점 질문
8번 문제의 경우 size만큼 탐색을 하셨는데, 9번은 그렇지 않습니다. 이부분에 대한 차이를 정확히 감이 잡히지 않아 질문드립니다. 좋은 강의 감사드립니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
def 안에 while 문 사용 시 변수 문제
import sys #sys.stdin=open("input.txt", "rt") a, b = map(int,input().split()) Line = [] for i in range(a): tmp = int(input()) Line.append(tmp) lt = 1 rt = max(Line) def binary_search(x, y, z): global res while x<=y : sum = 0 mid = (x+y)//2 for i in Line : sum += i//mid if sum >= b : res = mid return binary_search(mid+1,y,z) else : return binary_search(x,mid-1,z) return res print(binary_search(lt,rt, b)) 다음과 같은 코드입니다. 답은 맞혔으나 개인적인 궁금함으로 질문합니다. def 문 안에 global res라고 선언을 안하고 단순히 res = 0이라고 선언을 했을 때 제 생각하에 while문이 돌면 res=mid으로 새롭게 저장이 되고 return res 하면 저장한 mid값이 나와야할거같은데 변수 선언할 때 사용한 0 값이 나옵니다 ㅠㅠㅠ def 안에서 변수를 선언하면 다 적용되는거 아니였나요? 궁금해서 질문해봅니다... global res라고 하니까 문제는 해결 됐는데, 변수 함부로 전역 변수로 선언하기 싫어서 이렇게 질문드립니다 ㅠㅠ
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
자그마한 조언 부탁드립니다.
삭제된 글입니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
중복순열 구하기
중복순열 구하기 문제에서 1) res[0]=1 DFS(1) -> res[1]=1 DFS(2) -> print res[0],res[1] 2) res[0]=2 DFS(1) -> res[1]=1 DFS(2) -> print res[0],res[1] .... res[0] 과 res[1]이 계속 overwirte되서 (예전 값은 없어지고 새로운 값으로 덮어 씌여지는게 아니라, res라는 크기 2의 배열을 (2 x 2 x 2) 8개 만드는건가요? res배열을 새로 만드는게 아닌데 어떻게 8개의 서로 다른 배열 res를 갖고 있을 수 있는건지 궁금합니다. res 가 [1,1] , [1,2] , [1,3] , [2,1] ... 이렇게 8개 값을 stack 1줄 당 가지고 있다가 return하는 건가요?0? 분명 res는 전역변수라서 1개만 있는 것 같은데요.;; (헤갈립니다..;; ㅠㅜ)
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
자료구조 9. 아나그램 딕셔너리 개선코드에서 질문있습니다.
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") 개선된 코드를 쓰면 아래 반복문이 a문자열인 key값만 돌아서 만약 b가 a를 완전히 포함하고 a에 없는 문자가 포함되어있을 시 출력이 YES가 됩니다 실제 YES가 출력되는 입력예제인 AbaAeCe baeeACA 에서 뒤의 문자열에 fff만 붙여서 해봣더니 역시 NO가 아니라 Yes가 출력됩니다. 제가 생각한게 맞을까요? 그리고 저는 아래코드처럼 강사님 수정전 코드에서 딕셔너리를 단순 == 연산으로 비교했는데 이렇게 구현하는거는 문제의 취지에서 벗어난 정답인가요? import sys sys.stdin=open("input.txt", "r") a=input() b=input() str1=dict() str2=dict() for x in a: str1[x]=str1.get(x, 0)+1 for x in b: str2[x]=str2.get(x, 0)+1 if str1 == str2: print("YES") else: print("NO")
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이분탐색(결정알고리즘) & 그리디 알고리즘 카테고리 타이타닉문제 질문있습니다
그리디 알고리즘에 대해 궁금한데요 문제를 간소화해서 설명하겠습니다. 무게제한:140 승객무게: 100 90 80 70 60 50 40 30 20 10이 있다고 가정. (sort되있음) 강사님이 설명하신게 최대값과 최소값 즉, 100과 10을 짝지어서 제거한다고했는데 최선의 결과는 100과 40을 짝지어서 보내는거잖아요? 그래서 찾아보니 그리디 알고리즘은 최선의 결과가 나오지는 않는다고 하더군요. 여기서 헷갈리는게 그럼 그리디 알고리즘은 코딩문제에는 적합하지 않나요? 문제에는 항상 답이 있고 이 답을 찾아야 하는데 최선의 결과를 도출하지 못하는 그리디 알고리즘은 적합하지 않을 수도 있다는 생각이 들어서 질문합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
자바 베이스 웹 개발자 준비중인 취준생입니다 ..!
안녕하세요! 좋은 강의 덕분에 재밌게 공부하고 있습니다. 감사의 인사 먼저 올립니다. 다름이 아니라, 알고리즘의 중요성을 알게되고, 매일 3문제씩이라도 풀자는 마음가짐으로, 짧고 좋은 코드를 위함도 있지만 문제 해결능력을 키우자는 마음가짐으로 공부에 임하고 있습니다. 하지만 지금 알고리즘을 공부할 때 사용하는 언어는 파이썬이고, 저는 웹 개발자를 희망해서 자바를 주력으로 해야할 것 같은데 알고리즘과 자료구조를 이 강의를 통해서 배우고 난 이후에 어떻게 해야할지 조언을 구하고 싶어서 글을 남깁니다. 가져야할 마음가짐과 고쳐야할 마음가짐이 있다면 가감없이 말씀 부탁드리겠습니다 ..! 긴 글 읽어주셔서 감사합니다 !
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
DP 에서 자신보다 아래 인덱스를 검사할 때 오름차순으로 해도 상관없나요?
n = int(input()) arr = list(map(int, input().split())) res = [0] * n res[0] = 1 ans = 0 for i in range(1, n): maxVal = 0 for j in range(i): # 이 부분에서 선생님은 주로 내림차순으로 쓰셔서요! if arr[i] > arr[j] and res[j] > maxVal: maxVal = res[j] res[i] = maxVal + 1 ans = max(ans, res[i]) print(ans) 주석 부분처럼 선생님은 주로 내림차순으로 검사하시는데오름차순으로 해도 상관 없는 것이 맞나요?혹시 문제가 생기는 경우가 있다면 말씀해주시면 감사하겠습니다 :)+) 좋은 강의 만들어주셔서 감사합니다 많이 배우고 있어요 ㅎㅎ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이런 방식의 코드도 괜찮나요?
``` n, k = map(int, input().split())res = list()cnt = 0for i in range(1, n+1): if n % i == 0: cnt+=1 res.append(i)else: if cnt < k: print(-1) else: print(res[k-1]) ```
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
탐색 & 시뮬레이션 카테고리의 스도쿠문제에서 질문있습니다
코드에 관해서가 아니라 어떤식으로 구현해야될까에 대해서 궁금한게 있습니다. 스도쿠 문제는 1~9까지 모든 수가 중복되지 않게 존재한가에 대한 구현이 중점인데 저는 그걸 set을 이용해서 풀었습니다 임의의 set에다가 행과 열을 넣고 미리 지정해둔 1~9가 들어있는 set집합과 비교하는건데요. 막상 이렇게 짜고 보니까 이렇게 풀어도 되나? 그런 느낌을 받았습니다. 왜냐하면 set에 중복을 제거하는 기능이 자동으로 들어가 있어서 입니다. 뭔가 파이썬기능을 이용해 꼼수를 쓴거같은 느낌을 받았습니다. 이런식으로 짜도 괜찮은걸까요? 실력 상승측면 혹은 실제 코딩테스트에서 점수를 낮게준다던지 하는 그런점이 있을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
강의에서 작성한 코드를 이렇게 바꿔봤는데 왜 에러가 뜰까요? ㅠㅠ
``` n = int(input())res = 0for i in range(n): tmp = list(map(int, input().split())) tmp.sort() a, b, c = map(tmp) if a == b and b == c: # 눈이 모두 같다면 money = 10000 + (a*1000) elif a==b or a == c: money = 10000 + (a*100) elif b == c: money = 10000 + (b*100) else: money = c * 100 if money > res: res = moneyprint(res) ``` a, b, c = map(tmp) TypeError: map() must have at least two arguments. 왜 에러가 발생할까요..? 같은 코드가 아닌가요? ㅠㅠ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
제 코드도 맞는 코드 같은데 어디서 틀렸는지 모르겠습니다 ㅠㅠ
``` # 같은 눈 3개 => 10000+(같은 눈) * 1000# 같은 눈 2개 => 1000+(같은 눈) * 100# 모두 다른 눈 => (그 중 가장 큰 눈) * 100n = int(input())total = list()t = 0for i in range(n): cnt = 0 num = list(map(int, input().split())) for j in range(len(num)): for p in num: if num[j] == p: cnt += 1 if cnt == 3: t = 10000 + cnt * 1000 elif cnt == 2: t= 1000 + cnt * 100 else: num.sort() t = num[0] * 100 total.append(t)total.sort()print(total[n-1]) ```
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
res = res * 10 + t 문제 어디에서 한건가요??
안녕하세요 ^^ res = res * 10 + t 이 개념을 강의에서 앞전 문제에서 했다고 하셨는데... 했던 기억이 없어서요 ㅠㅠ 강의 몇 번 에서 하셨는지 알 수 있을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 선생님
dp로도 풀어보았고 DFS로도 풀어봤습니다. DFS는 경우의 수가 너무 많아 타임아웃이 나더라구요! 이런 경우의 수 문제를 풀 때 dp와 DFS 중 어떤 것을 적절히 적용해야하는 지 팁이 있을까요?? 감사합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
인덱스 번호
매 강의를 들으면서 많은 걸 배워갑니다 좋은 강의에 대한 감사를 전하며 질문 시작하겠습니다 ! 리스트를 사용할 때 매번 인덱스가 등장하면서 헷갈리는데요 이번 문제에서는 인덱스를 0부터 시작하지 않고 1로 가정하고 시작하셨는데, 왜 그런지 이해가 되지 않습니다 ㅠㅠ ``` for i in range(2, n+1): if ch[i] ==0: ``` 이 코드가 있을 때, i가 2부터 시작하면 사실상 리스트의 3번째 부터 시작인데... 앞의 숫자 1,2는 왜 포함이 안되나요..?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
set이 있는데 3중 포문을 해주는 이유
안녕하세요 ! 자료구조 set()은 중복을 제거해준다고 말씀하셨는데요~ set에서 중복을 제거해주는데 3중 포문을 사용하는 이유가 궁금합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
강사님 코드의 어느 부분이 틀린건지 잘 모르겠습니다.
강사님, 안녕하세요. 유익한 강의 잘 듣고 있습니다. 다름이 아니라, 해당 코드가 계속 40점이 나오는데 왜 만점을 받지 못할까요? 고민하다 답을 찾지 못하여 질문 올립니다. from collections import deque import sys sys.stdin=open("input.txt", "r") a,b=map(int,input().split()) q=list(range(1,a+1)) q=deque(q) n=1 while q: if n!=3: x=q.popleft() q.append(x) n+=1 else: q.popleft() n=1 if len(q)==1: print(q[0]) q.popleft()
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
강사님 sum <0 에대해 질문입니다.
제가 문제를 풀때 물은 무조건 저울 한쪽에 놓여있을 거라 생각하니 sum < 0 일땐, 물의 무게가 - 가 될수 없으니 sum < 0 된다면 볼 필요가 없겠구나 라고 생각했는데, 제가 생각한 논리가 잘못됐을까요?
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제를 좀 더 구체화 해주셨으면 좋겠습니다!
선생님 강의 잘 듣고있습니다! 물론 예시를 제대로 보지않은 제 잘못도 있지만, 문제에 같은 노드를 방문하는것은 안된다는 말이 없고, 모든 경로의 가지수를 출력하라고해서, 화살표로 갈 수 있는 모든 방법을 구하는 문제로 파악해서 그렇게 풀었는데, 구체화하면 다른 분들이 저같은 실수를 안할 것 같네요! 예를 들어, 1,2,1,4,5 같은 부분도 다 가도록 만들었습니다! 좋은 강의 감사합니다 :)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코딩테스트에서 for문과 if문으로만 이루어진 코드보다 스택같은 자료 구조를 쓰면 더 점수를 받는다거나 그런게 있을까요?
코딩테스트에서 for문과 if문으로만 이루어진 코드보다 스택같은 자료 구조를 쓰면 더 점수를 받는다거나 그런게 있을까요? 일단 어떠한 방식으로던 답을 맞추는게 최우선이겠죠? 강의를 보기전에 나름의 논리를 세워서 풀었는데 테스트 케이스를 다 통과해서 저런식으로 경우를 나열해서 짜면 뭔가 빈약하지 않을까 생각이 들어 여쭤봅니다. import sys sys.stdin=open("input.txt", "rt") s=input() cnt=0 #잘려진 총 조각 수 box=0 #레이저를 맞게 되면 잘라지는 조각의 수 for i in range(len(s)): if s[i]=='(' and s[i+1]==')': cnt+=box elif s[i]=='(' and s[i+1]=='(': box+=1 elif s[i]==')' and s[i-1]==')': box-=1 cnt+=1 print(cnt)