묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결코딩테스트 [ ALL IN ONE ]
ㅇ
탑다운 방식인데
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
투포인터 3번(#16472) 조건문 순서 질문드립니다!!
안녕하세요, 선생님. 매일매일 강의 잘 듣고 있습니다!오늘은 투포인터를 공부하다 제가 작성한 코드와 제공해주신 정답 코드의 조건문을 확인하는 순서에 차이가 있어서 질문드립니다. 해당 문제를 풀 때 while 문 안의 아래 2가지 조건을 확인하는데요, 조건 1 if arr[e] in letter:조건 2 if len(letter) < N:제가 풀어봤을 때 저는 조건1 > 조건 2를 확인하도록 구현을 했는데정답 코드는 조건2 > 조건 1를 확인하더라구요. 물론 저는 실제 정답인 4와는 달리 답이 5가 나와서 코드가 어디에선가 잘못되긴 한 것 같은데틀린 이유가 조건문에 순서와 상관없이 제가 단순히 잘못 구현한 것인지아니면 반드시 조건문을 조건2>조건1의 순서로 확인해야되는 문제인지 판단이 서지 않아 질문드립니다! 그리고 앞으로 다른 문제를 풀 때도 어떤 조건을 먼저 확인해야 되는 것인지 어떻게 판단하면 좋을지 판단 기준이 있는지도 궁금합니다 ^^#[나의 코드] N = int(input()) arr = list(input()) s = 0 e = 0 letter = [] letter.append(arr[s]) ans = 0 while s < len(arr) and e < len(arr): ans = max(ans, e-s+1) if arr[e] in letter: ####### 조건 1 e += 1 else: if len(letter) < N: ####### 조건 2 letter.append(arr[e]) e += 1 else: s += 1 e = s letter = [arr[s]] print(ans)#[정답 코드] n = int(input()) arr = list(input()) arr.pop() #inch-worm s = 0 e = 0 letters = [] letters.append(arr[s]) dist = 0 start_flag = -1 while s < len(arr) and e < len(arr): # print(s,e,letters) dist = max(dist, e-s+1) if len(letters) <= n: ########조건 2 e += 1 if e < len(arr) and arr[e] not in letters: #######조건 1 letters.append(arr[e]) if len(letters) > n : s = s+1 e = s letters = [arr[s]] print(dist)
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
05_adtFileIO 프로젝트 문의
안녕하세요. 선생님! 소스 보다가 하나 발견한 부분 공유드립니다.프로젝트이름: 05_adtFileIO소스파일: singleList.c함수명: SearchListByName Q. 해당 함수는 Key값으로 조회하여 데이터를 로드하는 함수입니다.현재는 파일에서 매번 로드하도록 되어있는데캐싱된 데이터(pDataCache)가 있다면, 파일에서 읽어올 필요가 없을것 같아 문의드립니다.추가로 테스트 해보니Search(Kim) > Edit 0 > 수정완료 > Commit X > Search(Kim) 를 하면Edit에서 수정했던 데이터가 없어지는 현상이 있습니다.이미지의 흰 네모안의 로직(주석포함)은 추가해본 부분 입니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
LIFO 관련 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요LIFO 1번째 문제 소스 여기에서elif not stack or stack.pop() != p:해당 부분해서 stack.pop()을 해줌과 동시에 pop한 값이 p와 같은지 아닌지 비교해보는 걸까요?실질적으로 pop이 등장하는 부분이 저 부분밖에 없어서 헷갈리네요ㅠㅠ
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
LIS/LCS 2번 문제
안녕하세요! 질문드립니다~추가강의 LIS/LCS 2번 문제(#9251)를 백준에서 채점을 하다가 발견한 사실인데요 아래 정답 코드에서 import sys sys.stdin = open('/Desktop/dev/BackJoon/추가강의/LIS/9251.txt','r') sys.setrecursionlimit(999999) input = sys.stdin.readline A = str(input()) N = len(A) B = str(input()) M = len(B) dp = [[0]*(M+1) for _ in range(N+1)] for i in range(1,N+1): for j in range(1,M+1): # if A[:i][-1] == B[:j][-1]: if A[i-1] == B[j-1]: dp[i][j] = dp[i-1][j-1]+1 else: dp[i][j] = max(dp[i-1][j], dp[i][j-1]) print(dp[N][M]) import sys sys.stdin = open('/Desktop/dev/BackJoon/추가강의/LIS/9251.txt','r') sys.setrecursionlimit(999999) input = sys.stdin.readline 위의 이 부분을 지우고 돌리면 성공하는데, 위의 부분이 있을 때 채점 초반에 틀렸다고 하네요. 혹시 이번 문제에서는 input이 띄어쓰기가 없는 문자열이라서 input = sys.stdin.readline부분 때문에 에러가 난 것인지 궁금해서 질문드립니다!
-
미해결Do it! 알고리즘 코딩테스트 with Python
Python sys.stdin.readline() 사용
안녕하세요.구간합구하기 (백준 11660) 문제를 풀고 있는데요.코드는 똑같은데, 제일 상단에 아래 코드 입력 여부에 따라 시간초과/성공이 갈립니다.import sysinput = sys.stdin.readline 이게 실패와 성공을 가를만큼 중요한 역할을 하나요?위 코드를 넣으면 왜 빨라지는지 설명해주실 수 있으실까요?
-
해결됨코딩테스트 [ ALL IN ONE ]
[노션공유] 페이지 접근불가
안녕하세요 갑자기 노션 페이지에 접근이 불가능하다는 안내와 함께 노션 페이지가 공유 내역에서 삭제 되었습니다... 제 노션 아이디에 맞게 공유해주신 메일을 받고 초반에 사용했는데 갑자기 이렇게 돼서 재공유 요청 부탁드립니다. tldmschl81@soongsil.ac.kr 입니다!!
-
해결됨코딩테스트 [ ALL IN ONE ]
안녕하세요 공유해주신 노션이 열리지 않아 문의 남깁니다.
안녕하세요. 금일 노션 공유를 naver 이메일을 통해 받았는데요. 노션 자체를 제가 구글 아이디로 사용하고 있어서 그런건지 정확한 이유는 모르겠지만 노션이 열리지 않아서요. 혹시 bluesea9519@gmail.com으로 다시 보내주실수 있을까요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2차원 DP 1번 문제
안녕하세요, 추가강의를 듣다가 2가지 질문사항이 생겨 다시 글을 쓰게 되었습니다.^^ 위 문제를 설명해주실 때,처음에 recur으로 접근하신 후 dp로 바꿔서 설명을 해주셨는데요,15:45 부분에서 설명해주신 내용 중return으로 인해 계산이 끝나지 않고 이웃 칸으로 이동해서 계속해서 계산을 이어가도록 하는 부분이return 0 을 return dp[y][x] 로 바꾸는 부분에 해당하는 것인지 질문드립니다. 또한, 마지막에 답을 출력할 때,print(max(map(max,dp))+1왜 +1을 해주는지 궁금합니다. [정답 코드]오늘도 감사합니다~
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
DFS 문제 하나 여쭤봅니다!..
강의를 들어보다가 백준 - 16964번 DFS 스페셜 저지 문제를 풀어 보았는데 여러개의 답이 나올 수 있는 경우를 특정하기가 어려줘 질문 남겨봅니다!..graph에서 순차적으로 나오는 경우는 답을 구할 수 있는데 그래프에서 랜덤한 방향으로 진행될 시 어떻게 해야되는지 궁금합니다!..제가 짜본 기본 코드입니다..ㅜㅜ 도움 부탁드립니다!import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline # 함수 def dfs(idx): global visited, answer, graph, order visited[idx] = True answer[idx] = order order += 1 for i in graph[idx]: if not visited[i]: dfs(i) # 0. 입력 조건 N = int(input()) visited = [False] * (N+1) answer = [0] * (N+1) order = 1 graph = [[] for _ in range(N+1)] # 1. 그래프 받아오기 for _ in range(N-1): x, y = map(int, input().split()) graph[x].append(y) graph[y].append(x) # 2. dfs 수행 dfs(1) # 3. 출력하기 given = list(map(int, input().split())) # answer.sort() answer = answer[1:] if given == answer: print(1) else: print(0)
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
미로찿기 질문드립니다
올려놓으신 코드로 런해봤는데 몇가지 질문이 있어 질문드립니다.출발을 0,0이 아닌 2,2로 하거나 사진에서 미로의 숫자 1을 0으로 바꿔봤는데 길이 있음에도 Exception이 발생하는데 한참을 봤는데 왜 이런 현상이 발생하는지 모르겠어서 질문드립니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
누적합 문제4 질문
안녕하세요,이 문제에서 prefix 를 만드실 때 처음부터 5*5 리스트를 만드셨는데 이 아이디어는 어떻게 떠올리신 건지 궁금합니다. 저 방식이 누적합 문제를 풀 때 일반적으로 사용되는 방식인가요?저같은 경우에는 4*4형식으로 만들어서 코드를 작성하였는데 이렇게 하니 답은 맞는데 시간 초과가 뜨네용 n, m = map(int, input().split()) box2 = [] for _ in range(n): box2.append(list(map(int, input().split()))) for i in range(n): for j in range(n): if i - 1 >= 0: box2[i][j] += box2[i - 1][j] if j - 1 >= 0: box2[i][j] += box2[i][j - 1] if i - 1 >= 0 and j - 1 >= 0: box2[i][j] -= box2[i - 1][j - 1] # 쿼리 처리 for _ in range(m): x1, y1, x2, y2 = map(int, input().split()) answer = box2[x2 - 1][y2 - 1] if x1 - 2 >= 0: answer -= box2[x1 - 2][y2 - 1] if y1 - 2 >= 0: answer -= box2[x2 - 1][y1 - 2] if x1 - 2 >= 0 and y1 - 2 >= 0: answer += box2[x1 - 2][y1 - 2] print(answer)
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 공유 부탁드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요!어제 점심때쯤 결제했는데 아직 노션 공유가 안되었습니다ㅠㅠ 빨리 부탁드립니다!!
-
해결됨코딩테스트 [ ALL IN ONE ]
교재 문의드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의소개에 ( 한 권으로 끝내기! 195페이지 분량 ) 이라는 교재가 제공된다고 되어있는데, 이게 노션으로 공유되는 교재인가요?
-
해결됨Go Hard to C (feat. Algorithm)
stdio.h 파일을 찾을수 없다고 나오네요.
화면과 같이 진행중인 학습자입니다.cmd 에서 stdio.h 파일을 찾을수 없다고 나오는데, 혹시 추가 설치해야 하는 것이 있나요?
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
백준 2178 미로탐색 질문 입니다.
안녕하세요.. 질문부터 말씀드리면,중첩 for문을 돌면서 입력값을 받을때, i는 y축, j는 x 축으로 알고있는데 bfs 호출 후 상하좌우 탐색 시, now의 0번째 값을 왜 x로 보시는지 알고싶습니다.. y가 아닌지... 짧은 지식으로 생각할때는 그런거 같아서요 ㅎㅎ 모든 2차원배열[][]은 y, x가 아닌건가요? ㅠㅠ 맨붕오네요 ㅋ
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
구간합구하기1 (백준11659)
선생님이 강의하시는데로 코드쳤는데 마지막 샘플예시처럼5 5 입력하면 => 1 이 나와야하는데 -14 가 나와버리네요코드가 동일한데 왜 결과가 다를까요 ㅠ이래는 작성한 코드입니다 public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine()); int suNo = Integer.parseInt(stringTokenizer.nextToken());// 숫자의 개수 int quizNo = Integer.parseInt(stringTokenizer.nextToken());//질의개수 long [] s = new long[suNo+1]; //합배열 선언 stringTokenizer = new StringTokenizer(bufferedReader.readLine()); //한줄로 쭉 받아올때 stringTokenizer 사용 for(int i=1; i<=suNo; i++){ s[i] = s[i-1]+Integer.parseInt(stringTokenizer.nextToken()); } for(int i=0 ; i<s.length;i++) { System.out.print("s:"+s[i]+" "); } for(int q=0; q<quizNo; q++){ stringTokenizer = new StringTokenizer(bufferedReader.readLine()); int i = Integer.parseInt(stringTokenizer.nextToken()); int j = Integer.parseInt(stringTokenizer.nextToken()); System.out.println(s[j] - s[i-1]); } }
-
해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
socket 질문드립니다
1. 그림에서 빨간색 부분은 무슨 기능을 하는 건가요? 출력에도 영향이 없는 거 같아서 질문드립니다 그림에서 파란색부분에서 클라이언트가 wirte 할 때까지 대기하고 있는 건가요? 클라이언트 역시 readline을 만나면 서버가 write할 때까지 대기하는 건가요?
-
해결됨Do it! 알고리즘 코딩테스트 with C++
백준 1722 교재 81 질문
해당 문제를 푸는 알고리즘에 대해 더 자세한 설명이 필요할 것 같습니다.K번째 순열 출력할때, 왜 k와 (n-1)!를 비교하는지 이해가되지 않습니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
[5강 재귀] 3번 상담 문제 질문드립니다.
안녕하세요, 강의 너무 잘 듣고 있습니다.5강 최적화 강의의 3번 상담이라는 문제를 푸는데, 제공해주신 답변과 제가 작성한 코드에 차이가 있어 질문드립니다. [모범답안]def recur(idx, result): global answer if idx > n: if idx > n+1: return answer = max(answer, result) return recur(idx + table[idx][0], result + table[idx][1]) recur(idx + 1, result) n = int(input()) table = [[] for _ in range(n+1)] for i in range(n): a, b = map(int, input().split()) table[i+1] = [a, b] # print(table) answer = 0 recur(1, 0) print(answer)[제가 작성한 코드]# 14501 import sys sys.stdin = open('/Desktop/dev/BackJoon/5강_최적화/3_상담.txt','r') input = sys.stdin.readline N = int(input()) arr = [list(map(int, input().split())) for _ in range(N)] def recur(idx, price): global ans if idx >= N: # 배열의 마지막 인덱스를 지나가는 것은 무시 return if idx == N-1: # 배열의 마지막 인덱스 ans = max(ans, price) return recur(idx+arr[idx][0], price+arr[idx][1]) recur(idx+1, price) ans = 0 recur(0,0) print(ans)모범답안과 종료조건이 다른 것을 확인했습니다.제가 생각했을 때, 배열의 마지막 인덱스 (N-1)에서도 하루 짜리 일을 할 수도 있기 때문에 recur를 한번 더 돌수 있고 그 다음 인덱스 N 시점에서 종료되어야 한다고 생각해서 코드를 작성했습니다.혹시 제가 잘못 생각하고 있는 부분이 있을까요? 또한, 제공해주신 답변은table을 N+1의 길이로 생성recur(1,0)로 시작하고 있는데 해당 문제는 꼭 이렇게 접근해야 되는 것인가요? 미리 감사드립니다.