25%
57,750원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
res의 크기는 m+1개만 만들면 되지 않을까요??
왜 n+1인지 모르겠습니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
ch 를 0부터 시작하게하여 체크리스트를 1개 더 잡는 이유가
dfs의 level과 상응하게 하기위해 하는 것인가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
res 의 크기설정 질문드립니다.
def dfs(L): global cnt if L==m: for i in range(L): print(res[i],end=' ') print() cnt+=1 else: for i in range(1,n+1): if ch[i]==0: ch[i]=1 res[L]=i dfs(L+1) ch[i]=0 n,m=map(int,input().split()) cnt=0 res=[0]*(m+1) #여기res의 크기는 n이아니라 m+1 이 들어가야 맞는게 아닌가 질문 드립니다! n=3,m=2 에서 3개중에 2개를 넣는 것이니까 들어갈 수는 m+1이 되었을 때 출력 되게 하는 것이 맞다고 생각합니다. ch=[0]*(n+1) # 또 여기 ch가 왜 0을 포함해서 만들어야하는지 이해가 가지 않습니다.123 중하나니까 체크리스트를 1부터 만들어야 하는 것 아닌가요..ㅠ dfs(0) print(cnt)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
BFS 개인적으로 작성해본 코드에서 질문이 있습니다.
import sys from collections import deque #sys.stdin=open("input.txt", "r") dx=[-1, 0, 1, 0,] dy=[0, -1, 0, 1] sys.setrecursionlimit(10**6) n,m = map(int, input().split()) graph =[list(map(int, input().split())) for _ in range(m)] q = deque() answer = [] count = 0 flag = 1 def bfs(): global count while q: size = len(q) for j in range(size): now = q.popleft() for i in range(4): x = now[0] + dx[i] y = now[1] + dy[i] if 0 <= x < m and 0 <= y < n and graph[x][y] == 0: q.append((x,y)) graph[x][y] = 1 count += 1 def chk(graph): global flag for i in range(m): for j in range(n): if graph[i][j] == 0: flag = 0 for i in range(m): for j in range(n): if graph[i][j] == 1: q.append((i,j)) bfs() chk(graph) if flag == 0: print(-1) else: print(count-1) 위와 같이 코드를 작성하였을때 모두 통과가 됩니다. 하지만 저는 궁금한점이, 왜 마지막 출력을 할때 count-1 을 해야 찾고자 하는 결과와 같아 질까요?? 전 한개의 레벨을 마치면 count 를 올려주는 식으로 코드를 짜봤습니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션2 코드 구현 능력 기르기 4번
안녕하세요! 섹션 2 코드 구현 능력 기르기의 대표값 문제(4번) 아래와 같은 방식으로 풀면 오답인가요? 채점기를 돌렸을 때는 모든 부분 오답이라고 뜨는데, visual studio에서는 잘 실행 되더라구요! (해당 예시만 실행했을 때) 어느 부분이 잘못된 것인지 질문합니다. import sys #sys.stdin=open("input.txt","rt") N = int(input()) math=list(map(int, input().split())) avg=round(sum(math)/N) res=0 for i in range(N): for j in range(i+1, N): res=i if abs(avg-math[i])>abs(avg-math[j]): res=j print(avg, res-1)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
아나그램 질문(다른 풀이)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님! 아나그램 코드와 성능 관련하여 질문이 있어 글 남깁니다. s1 = input() s2 = input() hs = dict() for x in s1: hs[x]=hs.get(x,0)+1 for x in s2: hs[x]=hs.get(x,0)+1 for i in hs.keys(): if hs.get(i)%2!=0: print("No") break else: print("Yes") 저 같은 경우에는 dictionary를 하나만 생성하여 두 문자열에서 각 알파벳(key)에 해당하는 value들을 통으로 합했습니다. 이에 따라 (만약 각 문자열에서 해당하는 알파벳의 개수가 서로 일치하면) 통으로 합하여 2로 나눈 나머지가 0이 되겠다는 아이디어에 착안하여 위와 같이 풀이했습니다. 프로그램은 정상적으로 작동했는데 시간 복잡도나 성능상에 있어 좋은 코드인지 아닌지가 궁금합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션3에서 곶감문제
안녕하세요! 곶감 문제 코드에서 a[h-1]가 왜 행을 기준으로 되는지 궁금합니다 열을 기준으로 표현도 되지않나요? h=2일떄 2행이니 a[h-1]라고 표현하셨는데 a[h-1]이 2열을 표현할수도 있지않나요? 감사합니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
실전 모의고사 파이썬 강의도 나오나요?
C++로 진행하는 코딩 테스트 모의고사 강의를 올리신 걸 봤는데요. 혹시 파이썬 강의도 나오나요? 만약 나온다면 언제쯤 나올지 알 수 있을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
combination 리스트 생성
안녕하세요. 강사님. DFS 너무 어렵지만ㅠㅠ 강의 잘 듣고 있습니다 혹시 combination 결과를 담을 b 리스트를 생성할 때 nCr = n! / ((n-r)! * r!)을 활용하여 for i in range(n): b[i] = int(factorial(n-1) / (factorial(n-1-i) * factorial(i))) factiorial을 이용하여 코드를 짜봤습니다. vscode를 이용하여 코드 짰는데 자동으로 from math import factorial 생성됐더라구요... 실제 코테에서는 이런식으로 하면 안되는거죠??
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
봉우리 문제에서 0으로 감쌀때 이런식으로 하는건안되나요?
n = int(input()) # 5 l = [[0]*(n+2)]*(n+2) a = [list(map(int, input().split())) for _ in range(n)] ''' 5 3 7 2 3 3 7 1 6 1 7 2 5 3 4 4 3 6 4 1 8 7 3 5 2 ''' for i in range(n): for j in range(n): l[i+1][j+1]=a[i][j] 5x5로 받아준 2차원 행렬을 0으로 감싸고싶어서 for문돌려서 저런식으로했는데 값이 이상해서 for문안에서찍어보니 print(i, j, l[i+1][j+1], a[i][j], sep=', ') 0, 0, 0, 5 0, 1, 0, 3 0, 2, 0, 7 0, 3, 0, 2 0, 4, 0, 3 1, 0, 5, 3 1, 1, 3, 7 1, 2, 7, 1 1, 3, 2, 6 1, 4, 3, 1 2, 0, 3, 7 2, 1, 7, 2 2, 2, 1, 5 2, 3, 6, 3 2, 4, 1, 4 3, 0, 7, 4 3, 1, 2, 3 3, 2, 5, 6 3, 3, 3, 4 3, 4, 4, 1 4, 0, 4, 8 4, 1, 3, 7 4, 2, 6, 3 4, 3, 4, 5 4, 4, 1, 2 이런식으로 나오는데 원래 l = [[0]*(n+2)]*(n+2) 이런식으로 리스트 생성하면 칼럼 전부 다같이 변하나요???? 느낌으로는 주소 참조 형식때문인것같은데 리스트 l을 만들때 저런식으로만들면안되고 그냥 하나하나 0을찍어야할까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 풀이 방법에 대해서
안녕하세요, 항상 수업 잘 듣고 있습니다. 다름이 아니라 선생님께서 풀어주신 방법과 조금 다른 방법으로 풀어서 해결했습니다. 그런데 이를 도출해내는데까지 꽤 오래 걸렸습니다. 이런 방식으로 꽤 오래 걸리더라도 제 방법으로 한번 풀어보는게 더 좋을까요..? 한 문제당 오래 걸리다보니 이렇게 공부하는게 맞는지 궁금해서 질문 드려봅니다. 감사합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
제 코드에 대한 질문입니다.
중복되는 코드가 있지만, 저처럼 pop 이용해서 구현해도 괜찮을까요? n=int(input()) arr=list(map(int, input().split())) last=cnt=0 str="" while arr: # last 보다 둘 다 높을 경우 -> 작은거 선택 if arr[-1]>last and arr[0]>last: if arr[-1]<arr[0]: cnt+=1 last=arr[-1] arr.pop() str+="R" elif arr[-1]>arr[0]: cnt+=1 last=arr[0] arr.pop(0) str+="L" else: break # 왼쪽만 높은 경우 elif arr[-1]>last: cnt+=1 last=arr[-1] arr.pop() str+="R" #오른쪽만 높은 경우 elif arr[0]>last: cnt+=1 last=arr[0] arr.pop(0) str+="L" else: break print(cnt) print(str)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
List 변수 초기화 위치에 따라 정답이 달라지는 이유를 알고 싶습니다.
안녕하세요 아래와 같이 문제풀이를 했습니다. 하지만 tmp2 라는 리스트 변수 초기화 위치에 따라 정답이 달라집니다. 그 이유가 궁금합니다. 특히 마지막 입력값 3 1 4 이 들어갈때 취해지는 리스트 x 의 경우 3번째 행만 변경되어야 할 거 같은데, 2번째, 5번째 3번째 행의 리스트 값이 변경이 됩니다. 이유가 궁금합니다. ------------------------------------
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
아나그램 풀이
안녕하세요. 강의 정말 잘 듣고 있습니다. 이번 문제에 대하여 dictionary의 value에 해당 문자열에 대하여 count함수를 써서 다음과 같이 풀어봤는데 괜찮은건가요? import sys # sys.stdin = open('input.txt','rt') # 방법 1 a = input() dict_a = dict() for x in a: dict_a[x] = a.count(x) b = input() dict_b = dict() for x in b: dict_b[x] = b.count(x) if dict_a == dict_b: print('YES') else: print('NO')
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
reverse 구현 관련 질문
선생님 안녕하세요. 각 자연수를 str로 입력받고 reverse 함수에서 int(x[::-1])을 리턴하는 방법으로 접근하는 건 바람직하지 않은 방식일까요? time 모듈을 이용해서 시간을 측정해보니 문자열을 인덱싱하는 방법이 근소하게나마 빠르던데, 인풋에 따라 결과가 달라지거나 제가 놓친 부분이 있을까해서 질문드립니다. 항상 강의 잘 듣고 있습니다. 늦었지만 새해 복 많이 받으세요!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
제 코드도 한 번만 확인 부탁드립니다.
코드를 다음과 같이 짜봤는데 너무 무식하게 짠 거 같아요ㅠㅠ 테스트는 다 통과 했는데, 실제 테스트에서는 너무 비효율적일까요? import sys # sys.stdin = open('input.txt','rt') from collections import deque n = int(input()) a = list(map(int, input().split())) a = deque(a) # 방법 1 b= [] ans = '' cnt = 0 while True: if len(b) == 0: if a[0] < a[-1]: b.append(a.popleft()) cnt += 1 ans += 'L' else: b.append(a.pop()) cnt += 1 ans += 'R' else: if len(a) == 1: if a[0] == n: cnt += 1 ans += 'L' break else: break else: if a[0] > b[-1] and a[-1] > b[-1]: if a[0] < a[-1]: b.append(a.popleft()) cnt += 1 ans += 'L' else: b.append(a.pop()) cnt += 1 ans += 'R' elif a[0] > b[-1] and a[-1] < b[-1]: b.append(a.popleft()) cnt += 1 ans += 'L' elif a[0] < b[-1] and a[-1] > b[-1]: b.append(a.pop()) cnt += 1 ans += 'R' else: break print(cnt) print(ans)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
끝에 % 나오는 이유?...
n = int(input("number: ")) for i in range(1, n+1): if n % i == 0: print(i, end=' ') number: 20 1 2 4 5 10 20 % 이런식으로 끝에 %가 출력이 됩니다. end=' ' 를 쓰지않으면 %가 출력이 되지 않구요. 혹시 왜 이런지 이유가 있을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
main 함수 사용 안하면
준비하는 기업이 프로그래머스 환경에서 코딩테스트를 보기에 이에 맞게 연습하려하는데 좀 헷갈리는 부분이 있네요. 1. solution 함수를 어떻게 지정해서 return은 어떻게 넘겨줘야할지 2. main 함수 사용안해도 된다고 하셨는데 사용안한다면 어떻게 코드를 구성해야할지.. 상세히 알려주시면 정말 감사하겠습니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
테스트케이스가 문제의 조건을 모두 반영하지 못하는 것 같습니다.
문제가 지금 세로줄은 고려를 하지 않아도 풀리네요.... 실수를 해서 알게된 거긴 한데 조금 더 케이스를 조정해 보는 것이 좋을 것 같습니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
solution() 함수 형태로 문제를 풀어야 할 때 질문입니다.
꼭 이 강의에 대한 질문만은 아니고요. 전체적인 DFS 문제에 관한 질문입니다. 강의에서는 인풋을 받아서 배열이나 변수에 저장하고 DFS까지 호출하는 것이 메인 모듈 안에서 이루어져서 전역 변수처럼 DFS() 같은 함수 내에서도 해당 변수에 접근할 수 있는데요. (제가 알기로 메인 모듈은 함수가 아니라고 알고 있습니다) 프로그래머스 등의 사이트에서는 해답을 return하는 solution 함수 형태로 풀게 되어 있습니다. 문제의 조건이 되는 배열 등도 input을 받는 게 아니라 solution() 함수의 매개변수로 들어 있어서 지역변수가 되는데요. 이런 경우에는 어떤 방식으로 문제를 풀어야 할지 질문 드립니다. 제 생각에는 1)매개변수로 주어진 데이터까지 포함해서 전역변수로 다시 선언해 주거나, 2)해당 데이터를 모두 DFS 함수의 매개변수로 전달하는 정도의 방식이 떠오르는데요. 1번은 같은 데이터를 다시 전역변수로 선언하는 게 다소 주먹구구 같은 느낌이 들고, 2번 방식으로 하면 매개변수가 5개도 넘어가는 경우가 생겨서... 혹 다른 방식이 있을까요?