묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-K dp 초기화 관련 질문드립니다
http://boj.kr/dcbf9db61feb45aab2fcb7f9d5e81b39저는 cnt를 0부터 시작해서 목표한 target 값 까지 도달한 경우로 코드를 작성하고 나머지 부분은 선생님께서 설명하신 논리와 똑같은 것 같은데 코드에서 주석부분에서 memset으로 초기화 시키고 for문의 memset을 주석 처리 하면 왜 동작을 안하는 지 모르겠습니다.4 4 42 21 13 33 4//0 2 4 2 0위의 경우를 집어 넣으면 전부 0 0 0 0 0이 나옵니다. 선생님께서 한경우와 제 경우가 무엇이 달라서 이렇게 나오는 지 잘 모르겠어서 질문을 남깁니다
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다 :)
안녕하세요 선생님 😀강의 잘 보고 있습니다.저는 count 변수를 두고 값을 저장하고 i값을 변경하여 사용하였는데 이렇게 작성해도 되는지 궁금하여 질문을 올리게 되었습니다. 또 아래와 같이 for문 안에 있는 i 값을 변경해도 괜찮은지도 궁금합니다! function solution(k: number, arr: number[]): number { let sum: number = 0; let count: number = 0; let max: number = 0; for (let i = 0; i < arr.length; i++) { if (count < k) { sum += arr[i]; count++; } else { if (max < sum) { max = sum; } i = i - count; count = 0; sum = 0; } } return max; }감사합니다
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 평가 부탁드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.function solution(m,input){ var count=0 for(let lt=0; lt<input.length; lt++){ var sum=0 for(let rt=lt; rt<input.length; rt++){ sum+=input[rt] if (sum>m) break count++ } } document.write(count) } solution(5,[1, 3, 1, 2, 3]);
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-N 질문있습니다.
안녕하세요 선생님! 예전에 강의 작심삼일로 공부했다가 다시 마음 먹고 처음부터 다시 풀어나가고 있습니다. 괄호라는 단어를 보고 "아! 이건 무조건 스택이다! 라고 생각하고 바로 스택을 사용해서 풀었습니다. 제출도 성공했고요. 근데 예전에 풀었던 코드 중에 ( 의 개수와 )의 개수를 비교해서 푼 적이 있더라고요. 제가 여기서 궁금한 거는 스택괄호문제가 엄청 많은데 다른 괄호 문제를 이런 식으로 풀어도 되는지, 이 방법은 사용하기 한정적이여서 비추한다...! 같은 이유도 궁금합니다.http://boj.kr/7d4dc4b04faa4343aa158b43f9d137e2
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
greater 정렬
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의에서 6:20초에 custom sort를 적용하지 않았을 때 greater 오름차순으로 정렬이 된다고 했는데 greater은 내림차순이 아닌가요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
강의 보지 않고 혼자 풀었는데
안녕하세요 혼자 푸는 중에 주어진 테스트케이스는 통과했으나 오답이 나왔습니다.질문에 들어와보니 테스트케이스가 여러개라는데 제 눈에는 문제에있는 한가지 테스트 케이스만 보여서요 다른 테스트 케이스는 어디서 볼 수 있나요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
lt, rt 사용하지 않아도 괜찮을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이런식으로 해도 괜찮을까요?function handleCheck(sH, tH) { for (const [key, value] of tH) { //sH에 tH에 있는 값이 없으면 false return if (!sH.has(key)) return false //값이 같지 않으면 false return if (value !== sH.get(key)) return false } return true } function solution(s, t) { let answer = 0; let tH = new Map(); let sH = new Map(); //t for (const x of t) { if (tH.has(x)) tH.set(x, tH.get(x) + 1); else tH.set(x, 1) } //s 윈도우 생성 for (let i = 0; i < t.length - 1; i++) { if (sH.has(s[i])) sH.set(s[i], sH.get(s[i]) + 1); else sH.set(s[i], 1) } for (let i = sH.size; i < s.length; i++) { //윈도우에 추가 if (sH.has(s[i])) sH.set(s[i], sH.get(s[i]) + 1); else sH.set(s[i], 1) //비교, sH랑 tH 사이즈 체크 if (sH.size === tH.size) { //비교, sH랑 tH 값이 맞는지 체크 > 맞으면 카운트+ if (handleCheck(sH, tH)) answer++ } //sH 앞에 값 빼기 //sH 맨 앞 = s에서 현재 index+1 - tH사이즈 let idx = i + 1 - tH.size; //앞에 값 빼기 sH.set(s[idx], sH.get(s[idx]) - 1) //뺀 값이 0이면 삭제 sH.get(s[idx]) === 0 && sH.delete(s[idx]) console.log('----------------------') } return answer; } let a = "bacaAacba"; let b = "abc"; console.log(solution(a, b));
-
미해결Do it! 알고리즘 코딩테스트 with C++
퀵정렬 질문
퀵정렬 14:38에 32랑 15를 swap 한다고 하셨는데 그 이유를 모르겠어요. 첫번째 정렬에서는 start와 end가 만난 15가 45와 비교해서 45가 더 크기 때문에 15의 오른쪽으로 이동한다는건 알겠는데, 두번째도 똑같이 적용하면 [5, 15, 32, 24, 42]가 아닌가요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-Q 맞...왜...틀....?
커뮤니티에 저와 비슷한 고민을 하신 분이 계셨습니다만 아직 답변이 안 달려 있어 질문 드립니다.https://www.acmicpc.net/source/share/d1985da707194375bba36ee00db6226e왜 틀린건지 잘 모르겠습니다. ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-H 코드 질문
안녕하세요 선생님! 강의 항상 잘 듣고 있습니다.다름이 아니라 선생님 답안을 참고하여 코드를 작성하고 제출하였는데 4%에서 틀리게되어 고치고 다시 제출하였더니 맞았지만어느부분이 왜 틀렸는지 잘 모르겠습니다...제가 의심가는 부분은 최대 component 숫자를 업데이트하는 부분(ret2)인데 고치기 전 코드와 고치기 후 코드가 저에겐 같아보여서요.참고로 틀린 코드 내에 ret1과 id의 역할은 거의 같습니다. (맞은 코드에서 하나로 고침)한번 봐주시고 왜 틀렸는지 알려주시면 감사하겠습니다 (_ _)틀린 코드 - http://boj.kr/cb8d5a12b7d049788680dc1601edd57b맞은 코드 - http://boj.kr/d5a147432b404ec4b3a73ab3f2dbda25
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 4659 반례를 찾아주세요 ㅠㅠ
안녕하세요 예제는 잘 통과하는데 제출하면 틀렸다고 나오는데 반례를 못찾겠어요ㅠㅠ아래는 모음과 자음이 3번연속으로 반복되는지 확인하기 위한 코드인데 맞는지 의심이 됩니다!if (isVowel(s[i - 1]) == isVowel(s[i])){ cnt++; }else { cnt = 1; }http://boj.kr/5dd372c77cac4654bd661ebeb5d37f34
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
파이썬 초급 코딩테스트와 같이 정답코드가 모인곳이 있을까요 ?
안녕하세요 초급 코딩테스트 강좌 너무 잘 보았습니다.반복해서 복습하니 이해가 너무 잘되고 코드가 잘짜지더라구요!! 최고입니다!!혹시 이번 강좌의 정답 코드도 따로 모여있는 파일이나 깃헙 레포지토리가 있을까요 ?!
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
[2-5] 최대선호음식 시간초과..
import sys N, D, K = map(int, input().split()) bits = [2 ** i for i in range(16)] st = [0 for i in range(N)] res = 0 def and_calc(a, b): if a & b == b: return 1 return 0 def DFS(L, S, bit): global res if L == K: temp = 0 for i in range(len(st)): temp += and_calc(bit, st[i]) res = max(temp, res) return for i in range(S, D + 1): DFS(L + 1, i + 1, bit + bits[i]) return for i in range(N): # N input_value = list(map(int, sys.stdin.readline().split())) for bit in range(len(input_value)): if bit == 0: continue st[i] += bits[input_value[bit] - 1] DFS(0, 0, 0) print(res) 영상과 유사하게 구현을 했는데도 시간 초과가 나서요..어디가 문제인지 잘 모르겠습니다..파이썬이라서 그런건지.. 😢
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-V 문제 질문
안녕하세요 큰돌쌤! 문제를 풀다가 막혀서 질문드립니다! http://boj.kr/54155bff977f43b3a75c1a59fc22430d 저는 ‘dp[현재위치][이동시간] = 모금액’ 이렇게 두고 활용했는데 1퍼 진행되고 틀렸습니다. 어떤 부분이 잘못되었는지 가르쳐주실수 있나요?
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
cnt = 1 과 nums.sort() 의 순서가 바뀌어야하지 않나요?
안녕하세요 강사님. 덕분에 조금씩 강해지는걸 느낍니다. 다 강사님 덕분입니다. 다름이 아니라 문제 정답코드에서 cnt = 1 과 nums.sort() 라인이 바뀌어야 하지않나 의문을 제시해봅니다. 정렬을 해주는 이유가 이미 앞에서 중복검사를 한 값을 뒤에서 또 한번 검사하게 하지 않게하기 위함인데, cnt 를 먼저 1 로 초기화준 다음에 sort() 를 진행하게 되면 nums[0] 이었던 값이 나중에 또 중복검사되는 변수가 생기지 않나요? 해당 문제처럼 개수를 카운트하는 문제는 상관없지만, 만약에 uniq 한 값을 배열을 리턴받아 사용하는 문제가 된다면 문제가 있을 것 같습니다. 혹시 제가 놓치고있는 부분이나 잘못생각하고있는 것일까요?답변부탁드리겠습니다!! uniq 한 배열을 리턴받아 사용하는 경우로 가정하고 테스트를해보면 아래와 같이 나옵니다. nums.sort() 가 나중에 올 경우 nums.sort() 가 먼저 올 경우
-
해결됨코딩테스트 [ ALL IN ONE ]
DLinked List를 활용한 insert에서 메모리 할당해제관련해서 질문이 있습니다. (BrowserHistory)
class Node { let value: String var prev: Node? var next: Node? init(value: String, prev: Node? = nil, next: Node? = nil) { self.value = value self.prev = prev self.next = next } } class BrowserHistory { var head: Node? var current: Node? init(_ homepage: String) { let newNode = Node(value: homepage) self.head = newNode self.current = newNode } func visit(_ url: String) { self.current?.next = Node(value: url, prev: self.current) self.current = self.current?.next } //..생략 }강의를 듣던중 의문이 생겨서 질문남깁니다. visit시에 참조가 새로운 노드로 변경되기 때문에 그 이전에 current뒤에 존재하는 Node들은 뒤에 몇만개가 있더라도 맨앞에 있던 노드의 참조를 가르키는 곳이 없기 때문에 모두 메모리에서 가비지 컬렉터에 의해 메모리에서 지워진다라고 말씀하셨는데, 뒤에 1개의 Node가 있는 경우는 그렇지만 Doubly Linked List의 경우 그 뒤에 Node들의 prev로 그 이전 Node들을 가르키고 있어 참조하는 곳이 최소 1개 이상은 존재하게 되어 메모리에서 할당해제가 되지 않을 것이라고 생각했습니다. 따라서 visit당시에 뒤에 있는 Node들도 메모리에서 할당해제가 되게끔 리스트의 끝까지 돌면서 Node의 next만 지워주고 테스트해보자고 생각해서 아래와 같이 코드를 수정하였습니다. func visit(_ url: String) { var tmp = self.current while tmp?.next != nil { var before = tmp tmp = tmp?.next before?.next = nil } self.current?.next = Node(value: url, prev: self.current) self.current = self.current?.next }이를 LeetCode의 결과로 확인해보니 물론 속도는 5ms 줄었지만, 메모리 4MB정도 줄일 수 있었습니다.Swift의 경우 가비지 컬렉터가 아닌 ARC가 컴파일 타임에 Reference Count를 확인하기 때문에 그 동작 방식에서의 차이에서 비롯된 차이인지 궁금합니다.가비지 컬렉터에서는 실제로 위의 같은 경우에도 메모리 할당 해제가 되는건가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L 주몽 문제 왜 틀렸는지 잘 모르겠어요 ㅠ
안녕하세요 선생님,아래와 같이http://boj.kr/fb635eced5da4486b8668d07bf1d4370a[m-i] = 0; <-- 효율성을 위해 이 코드를 넣었는데 틀렸다고 해요 그런데, 위의 코드를 넣지 않고 마지막 ret / 2 를 통해서 잡아주면 맞았다고 하네요..http://boj.kr/9a9b8fac99914ffdbfe06fcc4d5a8157그냥 넘어가도 될것 같긴 한데.. 너무 궁금하네요,,, 찾는데 오래걸리고 혹여 바쁘시다면 꼭 봐주시지 않으셔도 괜찮습니다!
-
해결됨코딩테스트 [ ALL IN ONE ]
디코
디코를 사정이 있어 나가게 되어 다시 초대받을 수 있는지 궁금합니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 접근법
안녕하세요 강사님.문제를 보고 dfs 구현이 더 맞다고 생각하여 다음과 같이 dfs 방식으로 접근해서 해결했는데, bfs 방식으로 푸는 것이 더 옳바른 방향인가요? 복잡도 등의 측면에서 강사님의 풀이가 더 좋을까요? import sys sys.stdin = open('in5.txt','r') def dfs(y,x): global cnt # 현재 섬 방문 표시 후 # 주변에 섬 더 있는지 탐색 arr[y][x] = 0 for i in range(8): nx = x + dx[i] ny = y + dy[i] if 0<=ny<=(N-1) and 0<=nx<=(N-1) and arr[ny][nx] == 1: dfs(ny,nx) if __name__ == '__main__': # 입력정보 저장하기 N = int(input()) # 격자판 크기 arr = [list(map(int,input().split())) for _ in range(N)] # 맵 정보 # 상하좌우대각선 탐색 변수 dx = [0,1,0,-1,-1,1,1,-1] dy = [-1,0,1,0,-1,-1,1,1] cnt = 0 # 섬 갯수 저장 # 맵 전부 탐색 for i in range(N): for j in range(N): # 만약 섬이 발견되면 dfs로 넘겨주기 if arr[i][j] == 1: dfs(i,j) cnt += 1 print(cnt)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-F 반례부탁드리겠습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/b5a0d399c3344237a51a700bfb633b2a와 같이 작성을 했는데 다양한 예제들을 넣어도 답이 뜨지만 틀린 이유를 잘 모르겠습니다. 편하실때 반례 한번만 부탁드리겠습니다.