25%
57,750원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. if main 부분 질문 드립니다.
안녕하세요. 좋은 강의 잘 듣고 있습니다. 알고리즘과 별개인 질문인데요. 1. DFS 풀이할 때, if __name__=="__main__": 을 사용하는 이유가 뭔가요? 구글링 해보니, main함수로 현재 파일에서만 작동되게 하는 문법이라고 하는데, 써야하는 이유가 있을까요? 2. 4방향 탐색 dx, dy list 선언은 왜 main함수 밖에 선언했나요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
소수의개수)for문에서 잘 모르겠는 부분이 있어 질문 드립니다.
for j in range(i,n+1,i): ch[j]=1 에서 2와 3은 소수인데 소수가 아닌걸로 돼서 ch[i]==0일때 카운트가 되지 못하지 않나요? 이 부분을 제가 잘 이해하지 못한거같아서 질문드립니다. 답변부탁드립니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
ch 리스트의 필요성
어차피 dis 리스트도 0으로 초기화해서 사용하고 이동할 때마다 해당 인덱스에 jump 횟수를 기록하는데 dis로 중복 여부를 체크하지 않고 굳이 ch를 하나 또 만드는 이유는 무엇인가요? import sys from collections import deque def BFS(n, m): dQ = deque() dQ.append(n) stop = False while dQ: now = dQ.popleft() for next in (now-1, now+1, now+5): if 0 <= next <= MAX: if dis[next]==0: dQ.append(next) # ch[next] = 1 dis[next] = dis[now]+1 if next == m: stop = True break if stop: break print(dis[m]) if __name__=="__main__" n, m = map(int, sys.stdin.readline().split()) MAX = 10000 dis = [0] * (MAX+1) BFS(n, m)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
채점기가 작동하지 않아요
vscode를 사용하고 있는데 코드는 정상적으로 값이 나오는데 채점기는 안되네요 방법좀 알려주세요ㅠㅠ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
채점기 exit_code()
채점기 exit_code()가 나오는건 무슨의미일까요ㅕ..?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
간단하게 max함수를 이용해서
간단하게 max 함수로 이용해서 할수 있는 방법은 어떻게 하면 되나요? 파이썬은 max라는 함수가 라이브러리 함수로 되어있다고 알고 있는데요.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
sys 사용 시 exit_code
안녕하세요. 강사님 풀이에서 input 대신에 sys로 풀이할 경우 터미널에서는 이상이 없지만 채점기를 돌렸을 때 exit_code가 발생합니다. 제가 어느 부분을 놓친 걸까요? import sys def DFS(v,P): global cnt if v==n: cnt+=1 for j in range(P): print(chr(res[j]+64), end='') print() else: for i in range(1, 27): if i <10: if code[v]==i: res[P]=i DFS(v+1, P+1) else: if code[v]==i//10 and code[v+1]==i%10: res[P]=i DFS(v+2, P+1) if __name__=="__main__": # with open('in5.txt') as sys.stdin: code = list(map(int, sys.stdin.readline())) n=len(code) code.insert(n, -1) res=[0]*n cnt=0 DFS(0, 0) print(cnt)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
제 풀이 방식이 큐로 처리했다고 볼 수 있을까요?
import sys sys.stdin = open("input.txt", "rt") from collections import deque answ = input() n = int(input()) res = "" for i in range(n) : tmp = list(map(str, input())) dq = deque(tmp) while dq : a = dq.popleft() if a in answ : res += a if res == answ : print("#%d YES" %(i+1)) else : print("#%d NO" %(i+1)) res = ""
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
11강 16분08초
소수인지 확인하는 함수를 만드셨는데, 짜여진 대로 동작하면 range(2,2)는 아무것도 없는 값이라서 isPrime(2)하면 None으로 나옵니다. if x ==2: True 로 예외 처리하는 방법 말고 깔끔한 방법은 없을까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
동전분배하기 (DFS)
안녕하세요 동전분배하기 문제를 풀고 있는데 in1.txt 에서 [5, 300, 10, 10, 10, 10]이 주어진다면 (300), (10, 10, 5), (10, 10)으로 분배해서 최소차가 280인게 가장 작은 차 아닌가요? 제가 착각한거 일 수 있는데 답이 290이라 어떻게 이렇게 나오는지 궁금합니다.
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
if문 안에 while문 구조
if 조건: 실행할 내용 while 조건: 실행할내용 병합정렬 코드처럼 이러한 if문안에 while문 코드인경우에 코드 실행순서가 if문을 먼저 다 돌고 while문을 실행하나요?? 아니면 if문 하나 실행하고 while문 하나 실행 이런식으로 작동되나요?? 헷갈려서 질문드립니다 ㅠㅠ
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
효율성에 대한 질문입니다.
안녕하세요 선생님 설명을 듣기 전 미리 문제를 풀었는데 선생님과 다르게 1~9까지의 배열을 비교하는 코드를 작성해 보았습니다. 그런데 여기서 궁금한 점이 저는 각 그룹이나 행, 열등을 배열에 하나씩 집어 넣어서 정렬을 시킨 이후 1~9까지의 숫자가 담긴 배열과 비교를 했는데, 선생님의 코드와는 다르게 정렬이라는 알고리즘이 한번 더 들어가기 때문에 선생님 보다 비용이 더 발생하는 코드인지 궁금합니다. arr = [list(map(int, input().split())) for _ in range(9)] temp = list(range(1, 10)) flag = True # 다중 반복문 탈출용 변수 temp1 = [] # 행 체크용 배열 temp2 = [] # 열 체크용 배열 temp3 = [] # 그룹 체크용 배열 for i in range(9): temp1 = copy.deepcopy(arr[i]) # 원본 배열을 그대로 유지하기 위해 깊은 복사. temp1.sort() # 배열에는 1~9 까지 들어있으므로 정렬한 두 배열이 다르다면 NO로 끝냄 if temp1 != temp: print("NO") break # 열 체크를 위해 다시 반복문 수행 for j in range(9): temp2.append(arr[i][j]) temp2.sort() if temp2 != temp: print("NO") break temp2 = [] # 그룹이 총 9개로 이루어져 있고, 열은 3개 단위로 끊어져야 하므로 3의 배수일때마다 체크한다. if i % 3 == 0: for j in range(9): # 행 또한 3개 단위로 끊어서 계산해야 하므로 3의 배수일때마다 체크한다. if j % 3 == 0: x = j for k in range(3): temp3.append(arr[i][x]) temp3.append(arr[i+1][x]) temp3.append(arr[i+2][x]) x += 1 temp3.sort() if temp3 != temp: print("NO") flag = False break temp3 = [] if not flag: break if not flag: break else: print("YES")
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
살짝 다르게 풀었는데 어떤지 봐주세요! 테스트케이스는 다 통과했습니다
import sys sys.stdin=open("input.txt", "rt") a=[list(map(int, input().split())) for _ in range(7)] cnt =0 for i in range(7): #행, 열 start = 0 for _ in range(3): if a[i][start]==a[i][start+4] and a[i][start+1]==a[i][start+3]: cnt+=1 if a[start][i]==a[start+4][i] and a[start+1][i]==a[start+3][i]: cnt+=1 start+=1 if start ==3: break print(cnt)
- 해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
exit_code1이라는 오류가 뜹니다!
삭제된 글입니다
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
맥북에서 사용법 문의드립니다.
안녕하세요, 윈도우 노트북 가진게 없어서 맥북에 부트캠프에 윈도우를 설치해 사용중이었습니다. 하지만 제 노트북이 오래되어서 그런지 자꾸 블루투스 연결이 끊기고, 발열이 심해져서 다시 맥 os 에서 강의를 이어가고자 하는데 visual studio code 혹은 pycharm 으로 하려니 txt 파일을 받아오는 것에서 조언을 구하고자 질문드립니다. 윈도우에서 하는 것과 좀 다른 것 같아서요 readlines 를 쓰려고 하니 split( ) 으로 하는게 먹히지를 않고 파일.readline( ).split( ) 을 쓰자니 txt 파일에서 필요한 행만 가져오는 방법을 모르겠습니다. 예를 들어 5 1 2 3 4 5 6 7 8 9 이렇게 txt 에 입력이 주어졌을 때 5를 따로 n 값에 저장하고, 7 8 9행만 따로 저장한다던지 하는 방법 질문드립니다. 윈도우에선 그냥 따라하면 아무런 문제가 없었는데 맥에서 동일하게 하려니 난감하네요 ㅜ.ㅜ 초보자를 도와주세요
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
bfs로 풀어봤는데 답이 안 나옵니다.
안녕하세요 문제를 bfs 방식으로 풀어봤는데 답이 1로 나옵니다. 코드를 살펴봐도 뭐가 잘못된건지 모르겠어서 질문남깁니다. 높이 범위가 1~100이여서 물에 잠기지 않는 영역에 방문시 0으로 바꾸는 식으로 풀어봤는데 아무래도 이 방식이 잘못된건가요? import sys from collections import deque sys.stdin = open("input.txt", 'r') n = int(input()) board = [list(map(int, input().split())) for _ in range(n)] dq = deque() dx = [0, 1, 0, -1] dy = [-1, 0, 1, 0] area = [] for rain in range(1, 101): count = 0 for i in range(n): for j in range(n): if board[i][j]>rain: board[i][j] = 0 dq.append((i,j)) while(dq): tmp = dq.popleft() for k in range(4): x = tmp[0] + dx[k] y = tmp[1] + dy[k] if 0 <= x < n and 0 <= y < n and board[x][y] > rain : board[x][y] = 0 dq.append((x,y)) count += 1 area.append(count) print(max(area))
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
질문입니다!!!
dis[x][y] = dis[tmp[0]][tmp[1]] + 1 여기에서 튜플의 x좌표 y좌표를 입력받고 1을 왜 더해 주셨는지 궁금합니다!!!
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
그리디 방법
강사님!! 그리디방법은 가장 좋은 방법으로 문제를 풀어나가는 것이잖아요?? 근데 제가 선택한 방법이 가장 좋은지 아닌지는 어떻게 판별할 수있나요? 저는 아래와같이 코드를 썼는데, 어떤 코드가 더 좋다고 말할 수 있는지 그 기준을 모르겠습니다!!! people, limit_kg=map(int, input().split()) weight=list(map(int, input().split())) cnt=0 sum=0 weight.sort() for i in weight: if sum+i>limit_kg: cnt+=1 sum=i else: sum+=i print(cnt)
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
Cut-Edge Tech를 사용하는 이유
이전 문제인 <합이 같은 부분집합>의 경우 전체 합이 짝수일 경우에만 DFS를 호출하도록 작성했습니다. 마찬가지로 이번 바둑이 문제에서도 바둑이 몸무게의 전체 합이 무게 제한에 걸릴 경우에만 DFS를 호출하도록 작성했습니다. 그래서 Time-Exceeded 문제가 발생하는지 모르고 DFS 함수 내에서 Cut-Edge Tech를 적용하지 않았습니다. 혹시 이런 방식으로 조건을 줘서 DFS를 호출하는 것은 잘못된 접근 방식일까요?
- 미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
역수열 문제
섹션 4 역수열 문제 코드 짜봣는데 틀린건가요? n = int(input()) a = list(map(int,input().split())) l = [] for i in range(len(a)-1,-1,-1): l.insert(a[i],n) n-=1 print(" ".join(map(str,l)))