묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨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)로 시작하고 있는데 해당 문제는 꼭 이렇게 접근해야 되는 것인가요? 미리 감사드립니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
강의를 다 듣고나서 문제는 어떤걸 푸는 것이 좋은가요?
문제를 풀 수 있는 대표적인 플랫폼을 뽑아보자면Leetcode프로그래머스백준이렇게 있는 것 같은데 강의를 다 듣고 기업 코테를 대비하기 위해서는 어떤 곳의 문제를 풀어보면 좋을까요?
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
다음강의
언제나오나요? DP 강의 보고싶네여..
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 공유 확인부탁드립니다.
안녕하세요:) 어제 오후 11~12시쯤 결제 후 신청 폼을 올렸는데 아직 공유가 안 되어 있습니다. kse011010@gmail.com 위의 이메일로 공유 부탁드렸는데 확인부탁드립니다‼
-
해결됨코딩테스트 [ ALL IN ONE ]
이제 모든 강의가 다 올라온 상태인가요??
이제 완강해도 되는지 궁금합니다~!
-
미해결그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
바이너리 검색
질문이 있습니다. A={ 3 , 4 ,6, 1, 10, 9 } 가 있으면 binary search 를 실행할 수 있나요? 아니면 없나요?저는 unsorted 이므로 검색이 안된다 했는데, 학교에서는 할 수 있는데 틀린 답을 가질거라고 하더라구요. 이거에 대해서 개념이나 정의를 이용해서 반박할 수 있을까요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
1강 4번 예시 답안에 대한 질문
문제 4. 숫자야구 ( # 2503 )A 는 3 자리 숫자로 된 정답을 하나 정합니다.B 는 3 자리 숫자를 제시해서 A 가 생각하고 있는 정답을 맞히려고 합니다.B 가 말한 숫자가 정답에 포함되어 있다면 1 Ball 입니다.B 가 말한 숫자가 정답에 포함되어 있고, 자리도 동일하다면 1 Strike 입니다.다른 숫자로 이루어진 세 자리수Strike 와 Ball 의 결과를 보고, 가능한 숫자를 계산하는 프로그램을 작성하세요.4123 1 1 356 1 0 327 2 0 489 0 1 2백준 사이트 들어가보니 가능한 숫자 324,328 이렇게 두 개이어서 결괏값이 2라고 나와있는데,329를 생각하고 있어도 위와 같은 s,b 가 가능한 것이 아닌가요?
-
해결됨코딩테스트 [ ALL IN ONE ]
프로그래머스에서는 어떤 문제를 풀어야 하나요
레벨1은 그냥 풀겠는데 레벨2부터는 난이도 책정이 백준에 비해 넓은 것 같더라 구요 그래서 정답률 몇 짜리 정도 되는 걸 풀어야 하는지 알 수 있을까요
-
해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
지역 내부 클래스 질문드립니다.
"메서드 호출 이후에도 사용해야 하는 경우가 있을 수 있으므로 지역 내부 클래스에서 사용하는 메서드의 지역 변수나 매개 변수는 final로 선언됨"라고 말씀하셨는데 final로 선언되면 저장되는 영역이 달라지나요? 왜 final을 사용하는지 궁금해서 여쭤봅니다
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
[3강 누적합>이모스1법> 백준 17611] 런타임에러 질문드립니다!
import sys sys.stdin = open('BackJoon/3강_누적합/5_17611.txt','r') input = sys.stdin.readline n = int(input()) vertex = [list(map(int, input().split())) for _ in range(n)] ######## (x_min, y_min) -> (0, 0)으로 이동 x_min, x_max = 500000, -500000 y_min, y_max = 500000, -500000 for x,y in vertex: x_min = min(x, x_min) x_max = max(x, x_max) y_min = min(y, y_min) y_max = max(y, y_max) x_diff = 0 - x_min y_diff = 0 - y_min for i in range(n): vertex[i][0] = vertex[i][0] + x_diff vertex[i][1] = vertex[i][1] + y_diff ##### 수평선 조사 (강의에서와 같이 왼쪽으로 돌려서 봄) vertex_x_incre = sorted(vertex, key = lambda x: (x[0], x[1])) # y_range = y_max-y_min+1 x_range = x_max-x_min+1 x_sum_list = [0] * (y_range+1) # x축 방향으로 [1, 0, 0, ..., -1] 더함 for i in range(0,n,2): # 선분은 2개의 꼭지점으로 이루어짐 v1 = vertex_x_incre[i] v2 = vertex_x_incre[i+1] if v1[0] != v2[0]: # 디버깅 print('x point does not match!!')#만약 선분이 직선이 아니라면(혹은 sort가 잘못됨) break if v1[1] >= v2[1]: print('y point does not align!!')#sort가 잘못됨 print('v1:', v1) print('v2:', v2) break x_sum_list[v1[1]] += 1 x_sum_list[v2[1]] -= 1 x_sum_list = x_sum_list[:-1] #범위밖의 맨 마지막 -1 자리 버림 prefix = [0]*(y_range+1) for i in range(y_range): prefix[i+1] = prefix[i] + x_sum_list[i] prefix = prefix[1:] h = max(prefix) ##### y축 방향으로 조사 (수직선 조사) vertex_y_incre = sorted(vertex, key = lambda x: (-x[1], x[0])) y_sum_list = [0] * (x_range+1) # y축 방향으로 [1, 0, 0, ..., -1] 더함 for i in range(0,n,2): v1 = vertex_y_incre[i] v2 = vertex_y_incre[i+1] if v1[1] != v2[1]: print('y point does not match!!') break if v1[0] >= v2[0]: print('x point does not align!!') print('v1:', v1) print('v2:', v2) break y_sum_list[v1[0]] += 1 y_sum_list[v2[0]] -= 1 y_sum_list = y_sum_list[:-1] prefix = [0]*(x_range+1) for i in range(x_range): prefix[i+1] = prefix[i] + y_sum_list[i] prefix = prefix[1:] v= max(prefix) print(max(h,v))
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
let current = this.head 질문 있습니다!
this.head 대신 let current = this.head 처럼 current변수에 할당하여 사용하는 이유가 무엇일까요?ㅠ변수에 할당하여 사용하지 않았을 때 값을 보니 값이 다르게 나와 문의드립니다. li.add(3)이 실행될때 첫번째 노드가 사라짐 정상출력
-
해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
큐 구현하기 질문드립니다
public String deQueue() { if(isEmpty()){ System.out.println("Queue is Empty"); return null; } String data = front.getData(); front = front.next; if( front == null ){ // 마지막 항목 rear = null; } return data; }강사님께서 올려주신 코드인데 처음에는 head가 null이니까 isEmpty가 true라서 return null이 되는데enQueue 실행하고 deQueue를 2번 실행하면 head가 null이 아니라서 isEmpty가 false가 되면서NullPointerException이 발생합니다. 어떻게 수정하면 좋을까요?