33,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
[활용(바텀업DP)] 8:08, 10:55
안녕하십니까 코딩센세! 이번에도 어김없이 질문 드리고 싶은 부분이 있어서 질문글을 남겨봅니다. 활용(바텀업 DP) 수업에서, 8:08초와 10:55초 에서 작성하신 if문이 잘 와닿지가 않습니다. 8:08초의 경우, if idx+ interview[idx][0] > N 으로 작성하셨는데요. 설명 역시 논리적으로 다가왔습니다. 당연히 문제에서 주어진 N의 범위보다 크다면 인덱싱이 불가능할테니 idx보다 더 뒤에 있는 dp[idx+1]의 값으로 할당하는 거라고 이해했습니다. 문제는 10:55초 입니다. 작성하신 코드는 if weight < B 인데요. 부연 설명은 "가방의 무게보다 작으면 예외 처리를 한다"라고 이해했습니다. 문제의 요구사항에 따르면 가방의 무게보를 초과했을 때 예외처리를 해야 하지 않나? 라는 의문이 들었는데요. 아직 의문을 해결하지 못하여 선생님의 코드가 잘 이해가 되지 않는 상태에 있습니다... 저의 질문을 읽어주신다면, if weight < B 라고 조건을 걸어야 하는 부분에 대해 조금 더 상세한 설명을 부탁드립니다! p.s. 선생님 혹시 7강에 대한 정답 코드는 볼 수 없는건가요? 수업자료에 작성되어 있지 않아서 문의드립니다.
- 미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
기억 (누적합)
문제 1. 수열 (#2259)오타 혹은 백준 문제번호가 바뀐 것 같습니다.2259 -> 2559 문제 2. 수열 가장 크게 만들기 (#1912)모든 수열이 음수인 경우 0번째 index의 값이 가장 크게 되므로 print(max(prefix[1:])) 로 해주면 좋을 것 같습니다
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
3강 누적합 11660 2차원 배열 문제
안녕하세요!강의영상과 백준 문제에서 입력 순서를 x1,y1,x2,y2 형식으로 입력을 받는데 이렇게 입력할 경우 결과가 반대로 나오는거 같습니다.ex. 1,2,1,2일 경우 2,1,2,1의 결과가 출력인덱싱을 graph[y][x] 형태로 진행하여 파생된 문제 같습니다.그러므로 입력을 y1,x1,y2,x2로 변경하거나 2차원 배열 인덱싱을 graph[x][y] 형태로 변경해야할 것 같습니다.제가 이해한게 맞나요?항상 좋은 강의해주셔서 감사드립니다.
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
3강 3번 문제. 텐트세우기 #2304
안녕하십니까 코딩센세 훗날 일본 개발자 취업을 희망하는 코린이 입니다.저번 시간에도 궁금한 점이 있어서 질문 드렸지만, 오늘도 어김없이 궁금한 점이 생겨서 이렇게 게시판에 글을 작성합니다.3번 문제는 숙제로 주셨지만, 컨셉만 도출하고 코드는 30분 이상 걸리도록 구현을 못하여 강의록의 솔루션 코드를 이해하고 있는 중입니다.서론은 이만하고 바로 본론으로 들어가겠습니다. 본론에 해당 부분은 질문의 내용입니다.솔루션 코드를 해석하는 중에 # 정답 합치기 부분에 질문이 있습니다. 그 부분은 바로 maxPoint[1] - maxPoint[0] + 1 코드가 왜 필요한지 입니다. 아마도 추정컨대 높은 기둥이 넓이를 구해서 더해주는 연산으로 보입니다만, 항상 밑변이 1이라는 문제의 가정이 있었는데도 answer += 1*maxHeight 또는 answer += maxHeight가 오답인 근거를 듣고 싶습니다!바쁘신 와중에도 답변에 신경써주셔서 감사드립니다.
- 미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
[최적화 (정수론) 21:41 강의 질문] 문제 설명 중에 8까지의 예시를 이해하기 어렵습니다.
안녕하세요 강사님!파이썬 코딩테스트 도전하고 싶은 코린이입니다.강의를 듣고 있던 와중에 21:41초에서 계산하는 8까지의 예시 케이스를 설명하는데, 결과로 나오는 수열이 어떤 수열인지, 연산은 어떻게 되는건지 잘 이해가 되지 않습니다... 1 2 3 4 5 6 7 81 2 1 ... <<< 이게 무슨 수열인거죠? 어떻게 나온거죠? 조금만 더 상세히 설명해주시면 감사하겠습니다...문제 지시문과 영상을 여러번 읽어보아도 잘 이해가 되지 않아서 질문 남깁니다!
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
코딩 센세 입니다!
이번에 이직 후 회사에서 많은 것을 배우고 밤늦게까지 정리하며 잠드는 날들을 반복하고 있습니다! (외국어의 벽도 느끼고 있습니다 ... 하하 ) 질문해주신 질문들의 답변을 못달아드려서, 강의 수정을 빨리 빨리 못해드려서 정말 죄송합니다 ㅠㅜ... 항상 많은 질문 해주시고 공부해주시는 분들 감사합니다! 바로 답변을 못달아드릴때도 있지만 제 강의 열심히 들으시고 생기시는 궁금증들 질문해주시는 건 정말 정말 기뻐요 😄 제가 바로 답을 못 드리더라도 꼭 답을 드릴테니 간단한 궁금증이나 생각들도 모두 커뮤니티에 꼭 남겨주세요! 항상 많은 힘을 주셔서 감사합니다 😃 !!!!! 오늘도 다들 화이팅이에요!
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
1강 문제2 (백준 # 14568)
n = int(input()) answer = 0 for i in range(1, n+1): for j in range(1, n+1): for k in range(1, n+1): if i + j + k == n: if i % 2 == 0: if j >= k+2: if i >= 1 and j >= 1 and k >= 1: answer += 1 print(answer)왜 if i >= 1 and j >= 1 and k >= 1: 이 조건이 없어도 정답처리가 되나요??
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
#11653 소인수분해 문제(최적화 관련)
아래와 같이 코드를 작성하였는데 답은 맞췄지만 강의에서 말씀하신 제곱근 아이디어가 반영되어있지 않습니다.아래 코드를 더 최적화 할 수 있는 아이디어가 있나요? #11653 소인수분해 N = int(input()) divide = True while(divide): for i in range(2, N+1): if N % i == 0: print(i) N = N//i break if N == 1 : divide = False
- 미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
투포인터 #22988 문제 답안에서 빠진 게 있네요
투포인터 s == e 일 경우에 remain 을 1 추가 한다음에는 break 해서 while 문을 벗어나게 해주셔야 합니다. 안 그럼 그 다음 if 문에서 cnt 가 하나 추가되어 버립니다
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2강 정수론 #15736 질문입니다.
n = int(input()) answer = 0 for i in range(n+1): if i**2 > n: break else: answer = i print(answer)이렇게 풀었는데, 백준에서 틀렸습니다.. 왜 틀렸을까요??
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
(해결)정수론 #1978 자바코드로는 통과, 파이선으로는 통과가 안돼요...
+) 자바코드로는 통과했습니다. 파이썬코드로는 왜 통과를 못하는 걸까요?ㅠㅠimport java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int N = s.nextInt(); int [] num = new int[N]; int cnt = 0; for(int i = 0; i<N; i++){ num[i] = s.nextInt(); if(num[i] == 1) continue; int j; for( j= 1; j<(int)Math.sqrt(num[i])+1; j++){ if((num[i] % j == 0) & (j != 1)) break; } if(j == (int)Math.sqrt(num[i])+1) cnt += 1; } System.out.println(cnt); } } 파이선은 백준에 제출했는데 틀렸다고 나옵니다... 제 알고리즘에 문제를 찾아주실 수 있나요?ㅠㅠimport math #약수 빠르게 구하기(n의 제곱근까지만 구하기) #1978 N = int(input()) num = list(map(int, input().split())) cnt = 0 for i in range(len(num)): if num[i] == 1: continue for j in range(1, int(math.sqrt(num[i])+1)): if ((num[i] % j == 0) & (j != 1)): break if (j*j != num[i]) & (j == int(math.sqrt(num[i]))): cnt += 1 print(cnt)
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
1090완전탐색
해당 문제에 대해 몇번을 다시 읽고 있는데 왜 출력값이 예제와 같이 나오는지 이해가 안됩니다. '첫째 줄에 수 N개를 출력한다. k번째 수는 적어도 k개의 체커가 같은 칸에 모이도록 체커를 이동해야 하는 최소 횟수이다.'여기서 k는 무엇을 얘기하는 건가요?저는 4명의 친구들이 만날때 4명의 이동거리가 가장 짧은 좌표에서의 각 친구들의 이동거리를 순차적으로 나타내는 거 라고 생각하고 문제를 풀려고 했는데 그럼 주어진 출력예시와 맞지가 않습니다...
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
이분탐색 강의 13분 20초 (나무자르기 문제 마지막 print값이 e인 이유)
제목그대로 나무자르기 문제에서 마지막 return이 e가 되어야하는 이유가 좀 와닿지 않습니다.코드에서 잘라서 얻은 나무가 m보다 크거나 같을 경우, s를 mid + 1로 하기 때문에 이는 "절단기 설정 높이를 높이는 행위"이고, 문제에서 요구하는 것이 "절단기에 설정할 수 있는 높이의 최댓값" 이기 때문에 마지막에는 s를 print해야하는 것 아닌가? 싶어서 헷갈리는 것 같습니다.그리고 문제마다 e를 return하는 경우와 s를 return해야하는 경우가 나뉘는건지 좀 헷갈립니다.
- 미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
정수론 14252
53분 38초쯤에for j in range(2184, 2200): if gcd(42, i) == 1: if gcd(2184, i) == 1: count +=1 break if j == 2199: count += 2이 부분에서 이미 for i in range를 통해서42부터 2184까지 검증을 하고 넘어가서j로 2184부터 2200사이에 몇 개의 수를 넣어야 공약수를 넣어야 1이 되는가인데for j in range 안에 조건이 gcd(42,i) == 1인데이게 gcd(2184, j) == 1: 이렇게 되어야 하는 게 아닌가요이 부분이 이해가 안되네요ㅠㅠㅠ
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2주 뒤 코딩테스트 저 준비할 수 있을까요?
결국 미루고 미루다 코딩테스트 예정 일자가 11.26 (토) 2주가 채 남지 않았습니다.솔직하게 현재 파이썬 기초 문법, 기초적인 수식과 함수 구현만 할 수 있습니다. (반복문 포함)남은 시간이 적지만, 그래도 전략적으로 준비해보고 싶습니다. 알고리즘은 체감으로 백준 가장 기초 브론즈 1문제, 실버 2문제 정도라고 합니다.현실적으로 알고리즘 1문제 SQL 1문제 솔 목표를 두고 있습니다.어떤 걸 집중적으로 공부하는 게 좋을까요? 아래는 작년 유형 및 난이도입니다. 알고리즘 1번. 문자 치환 (가장 기초 브론즈)1->92->8..9->10->0a->z..A->B..예시로 123abcABC => 987zyxBCD 이렇게 변환하는 함수 만들기알고리즘 2번. 대리출석한 사람 수 (실버3)[1,2][1,2][1,2] =>2본인 제외 대출이라고 처리 알고리즘 3번. 분할과 정복 (실버1)정사각형 형태의 데이터를 주고자를 수 있는거 다 잘라서 그 안에서 또 정사각형을 자르고그 안에 알파벳 개수 제한 둔 것이 가능한지
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2강 정수로 문제3번
안녕하세요21분쯤에 176은 16으로 나누어 떨어지는건 이해했습니다.그런데 n의 제곱수로 나누어지는 약수를 찾아 모두더하라는 의미가176의 약수중에서 2의 제곱수로 나누어지는 애들을 찾아서 더하라는 이야기인데 176의 약수중 2, 4, 8, 16으로 나누어 떨어지니까 얘들을 더해야 하는 게 아닌가요?계속 생각해봐도 도저히 이해가 안돼서 남깁니다.
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
투포인터의 s, e 포인터 위치 질문
안녕하세요 현재 투포인터 알고리즘 강의를 듣고 궁금한 점이 생겨서 질문을 남깁니다. 투포인터 설명을 듣고 그럼 모든 투포인터 알고리즘 문제에서 "start포인터와 end포인터를 양 끝에 위치시켜놓고 시작하는거구나"라고 생각하고 강의에 있지는 않지만 "프로그래머스 - 보석쇼핑" 문제를 풀던 중에 해당 문제는 투포인터 문제임에도 start와 end를 처음 지점부터 동시에 시작하는 방식으로 풀어야만 했습니다. 제가 생각했을 때 start, end를 양 끝점에 두냐, 혹은 시작점에 두개를 모두 위치시키느냐 를 결정짓는 조건이 문제에서 주어지는 값들이 "sort를 하는 것이 의미있냐 없냐"의 여부에 따라 결정된다고 생각했습니다.문제에서 주어진 값들이 sort하는 것이 의미가 있다면: 양 끝점에 위치문제에서 주어진 값들이 sort하는 것이 의미가 없다면: 모든 포인터 시작점에 위치 (sort한 후에)이렇게 생각해도 맞는 것인지 아니면 그냥 문제를 보고 이를 판단해야 하는 것인지 궁금합니다.
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
정수론 강의 관련 질문입니다.
정수론의 22분 경의 문제가 이해가 안되어서 질문드립니다. 176~177 사이라는 조건에서는 176은 16으로 완전히 나누어떨어져서 16 + 소수(1) = 17은 이해했는데,22분~ 즈음에 4같은 경우에는 2가 두번이라 4라는 뜻이 이해가 안됩니다. 176과 같은 논리면 4는 2로 나누어떨어지니 2가 나와야 되는거 아닌가 생각이 들어 질문드립니다. 위의 연장선으로 27분 즈음에 2^0 은 1 이니 82로 나누어지는 숫자들의 수 만큼 + 1*(8/2)4로 나누어떨어지는 숫자들의 수 만큼 + 2*2여기까지는 이해8로 나누어떨어지는 숫자들의 수만큼은 + 4*1여기서는 4*1 이 아니라 3*1 이 아닌지1,2,4,8 이 약수가 되는데 1은 이미 처리 했으니 1은 제외해서 3 * 1 더해져야될 것 같은데 ㅠ 수학을 못해서 좀 어렵네요 답변주시면 감사하겠습니다.
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
완탐 1090
안녕하세요 자바로 강의 듣고 있는 학생입니다.강의를 들었을 때 이해한 바로는 x,y 따로 계산해서 더해 최솟값을 구한다.받은 좌표의 겹치는 부분 그러니까 예제로 보았을 때 x: 14~16 y:14~16의 로 모이는 모든 경우를 찾는다k번째에 k명이 모이는 최소 이동 횟수를 구하면 되니까 확인한 좌표에서 가까운 k개를 구하면 된다이렇게 이해하고 구현하면 될까요?그리고 하루정도 고민한다 해도 해결되지 않는다면 다른사람의 답, 풀이를 확인해봐도 될까요? 아니면 계속해서 시도하는게 좋을까요?
- 해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
완전탐색 숫자야구 2503
c++로 수강중인 학생입니다.. 백준 숫자야구 문제 c++로 풀어주실 수는 없을까요..? 몇번 구현해보다가 멘탈이 터져버렸습니다.. 우선은#include <iostream> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; int numbers[1000]; int strikes[1000]; int balls[1000]; for (int i = 0; i < n; i++) { cin >> numbers[i] >> strikes[i] >> balls[i]; } int answer = 0; for (int a = 1; a < 10; a++) { for (int b = 1; b < 10; b++) { for (int c = 1; c < 10; c++) { int counter = 0; if (a == b || b == c || c == a) { continue; } for (int i = 0; i < n; i++) { int check = numbers[i]; int strike = strikes[i]; int ball = balls[i]; int strike_count = 0; int ball_count = 0; int check1 = check / 100; int check2 = (check / 10) % 10; int check3 = check % 10; // 스트라이크 계산 if (a == check1) { strike_count++; } if (b == check2) { strike_count++; } if (c == check3) { strike_count++; } // 볼 계산 if (a == check2 || a == check3) { ball_count++; } if (b == check1 || b == check3) { ball_count++; } if (c == check1 || c == check2) { ball_count++; } // 매칭 여부 확인 if (strike != strike_count || ball != ball_count) { break; } counter++; } if (counter == n) { answer++; } } } } cout << answer << '\n'; return 0; } 이렇게 풀기는 했는데 선생님이 가르쳐주신 방향하고는 살짝 다른 거 같습니다.