월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
아나그램 개선 전 문제풀이 오류
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'가 나오는 것 같습니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
자리수의 합이 같은 경우는 고려를 안해주신거같습니다.
채점 폴더의 input파일을보면 자릿수의 합이 같은 숫자들이 여러개 보이는데 그냥 그런건 고려안하고 먼저 나온 숫자가 모두 답이 되도록 설정해두셨네요..자릿수의 합이 같은 경우 먼저 나온 숫자를 출력한다고 문제를 수정해야하지 않나 싶네요.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
내장 함수를 이용하는 건 별로인가요?
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이런 식으로 푸는 건 별로인가요?
- 파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
제가 스스로 풀어봤는데요
삭제된 글입니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
맥용 강의자료
현재 맥북 쓰고 있습니다. 강의자료 다운 받았는데 글자가 깨져있길래 이전 QnA 들 검색해보니 맥용 강의자료와 윈도우 용이 나누어져있는거 같던데 맥용은 어디서 다운받죠??
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
스택으로 풀어봤는데요
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)스택으로 풀어봤는데요. 강사님의 알고리즘이 훨씬 더 좋아보이네요
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
역수열 문제 관련 질문
안녕하세요 강사님 역수열 문제를 풀다가 제 코드가 논리상에 오류가 있는지와 효율성에 대해 알고 싶어서 질문드립니다. 저는 이전 강의에서 강사님께서 알려주신 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)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
조합
조합처럼 이렇게 풀었는데 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)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이분탐색(결정알고리즘) & 그리디 알고리즘 - 6.씨름선수(그리디) 관련 질문
안녕하세요 저는 강사님처럼 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가 되는건가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이런 식으로 짜도 괜찮을까요?
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)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
자릿수의 합
자릿수의 합 문제에서 자릿수의 합을 구할 때 아래와 같이 함수를 구하는데, 이때 while 문 대신 if 문으로 작성 했을 시 답이 다른 이유에 대해서 알고 싶습니다. def digit_sum(x): sum=0 while x>0: sum+=x%10 x=x//10 return sum
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
강사님 질문있습니다
예시에서 정답이 6인데 저는 5가 나오고 점수도 100점이뜨는데 뭐가 잘못된걸까요? 새해부터 강의듣고 문제풀기 시작했는데 기본과 팁들을 꼼꼼히 전수해주셔서 감사합니다!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 오류
강의를 듣기전에 문제를 풀어볼 때 아래 코드처럼 이중for문으로 풀었습니다. 제대로된 값이 안나오는데 어느부분에서 오류가 있는지 모르겠습니다. import sys sys.stdin = open("input.txt", "rt") N, M = map(int, input().split()) a = list(map(int, input().split())) cnt = 0 for i in range(len(a)): sum = a[i] for j in range(i+1, len(a)): if sum != M: sum += a[j] elif sum == M: cnt += 1 break print(cnt)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
채점오류
코드는 맞게 작성한것 같은데 이렇게 뜹니다 ㅠ..
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 길이 때문에 질문드립니다.
이런식으로 짜면 시간 초과에서 걸릴까요 ?? 수업에서 나오는 코드와 비교해서 너무 긴거같아서 질문드립니다. import sys # sys.stdin = open("input.text", "rt") n = int(sys.stdin.readline()) a = list(map(int, sys.stdin.readline().split())) lr = [] largest = 0 while largest < a[0] or largest < a[-1]: if largest < a[0] and largest < a[-1]: if a[0] < a[-1]: largest = a[0] a.pop(0) lr.append("L") else: largest = a[-1] a.pop() lr.append("R") elif largest < a[0] and largest > a[-1]: largest = a[0] a.pop(0) lr.append("L") else: largest = a[-1] a.pop() lr.append("R") print(len(lr)) print(''.join(lr))
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
진도 관련 상담
안녕하세요, 파이썬 기초 지식만을 가지고 선생님의 강의를 1강 부터 듣기 시작한 학생입니다 제가 2차 리스트 사용하는 구간들부터 문제를 1시간 이상 보고있어도 문제를 해결할 방법을 고안하지 못하고 선생님의 강의를 보며 코드를 옮겨쓰고 이해하는 과정을 거치고 있습니다. 이러한 저의 수준에서는 지금처럼 선생님의 풀이를 단순히 보고 옮겨 쓰고 이해하는 과정 + 복습 만 해도 실력이 향상할 수 있을까요? 어떤 점을 보완해야 2차 리스트 문제들을 순조롭게 풀 수 있을지 궁금해 문의드립니다 ㅠㅠ 늘 좋은 강의 감사드려요 ^^
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 질문
if any(cur[1]<x[1] for x in Q): 위 코드는 for문을 무조건 다 도는 것인가요 아니면 돌다가 true가 나오면 그 뒤는 for문 돌지 않고 다음 코드로 넘어가는 것인가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
씨름 선수 문제관련 질문
안녕하세요. 강의 잘 듣고 있습니다. 씨름 선수(그리디) 문제에서 잘 이해가 되지 않는 부분이 있습니다. 키순으로 정렬해서 두번째 지원자(181 60) 는 선발이 안되는 이유가 자기보다 큰(183)선수보다 몸무게가 작아서 라고 하셨는데요. 선발 원칙을 보면 “다른 모든 지원자와 비교하여 키와 몸무게 중 적어도 하나는 다른 지원자보다 키가 크거나 몸무게가 많이 나가는 지원자만 뽑기로 했습니다.” 라고 되어 있으니 다른 모든 지원자와 비교하면 키는 180인 지원자 보다 크니 해당 조건에 맞는 것 아닌가요? 적어도 하나는 키가 크거나 몸무게가 많으면 되니까요. 하지만 강의에서 보면 비교 대상이 자신보다 키가 큰 사람으로 한정하고 있습니다. 적어도 하나를 만족하려면 이미 자신보다 키가 작은 사람이 존재하기 때문에 키로는 조건을 만족한다고 봐야 하는것 아닌지요. 또, 그 다음 문장을 보면 A 지원자가 다른 모든 지원자와 비교하여 키와 몸무게가 모두 작거나 가벼운 경우가 한 번이라고 있다면 A지원자를 뽑지 않는다는 것입니다. 이 부분은 키와 몸무게가 모두 다른 사람과 비교해서 불리한 사람이라는 의미인가요? 그렇다면 항상 모든 지원자중 가장 키가 작고 몸무게가 가벼운 한명만 해당하는 것 아닌가요? 처음 문제를 읽었을때 선발조건과 입력예제, 출력예제와 맞지 않는다는 생각이 들었고. 강의를 듣고 나니 의도하신 조건과 문제에 기술된 설명이 차이가 있는 것 같다는 생각이 들었습니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
인터랙티브 쉘 관련 질문
안녕하세요. 저는 주피터노트북 환경에서 프로그래밍을 하고 있습니다. 하지만 어째서인지, sys.stdin=open('input.txt', 'rt') 명령이 제대로 동작하지 않네요. 어떻게 해결해야 할까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 관련 질문
문제를 보면 'N의 약수들 중 K번째로 작은 수'를 출력하라고 되어 있는데, 풀이를 보면, K번째로 큰 수를 출력하는 것으로 되어 있습니다. K번째로 작은 수를 출력하려면 어떻게 풀어야 할까요? 리스트에 넣고, 슬라이싱으로 푸는 방법 말고, 문자열로는 어떻게 풀어야 할지 감이 잡히지 않네요.