inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

2-B 맞왜틀???

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

테스트 케이스는 다 맞고 코드도 틀린부분이 어딘지 모르겠습니다 ㅠㅠ #include <iostream> #include<string.h> using namespace std; const int MAX = 51; const int dy[4] = { -1,1,0,0 }; const int dx[4] = { 0,0,-1,1 }; int T, N, M, K, cnt; int adj[MAX][MAX]; bool visited[MAX][MAX]; void dfs(int y, int x) { visited[y][x] = true; for (int i = 0; i < 4; i++) { int ny = y + dy[i]; int nx = x + dx[i]; if (ny < 0 || ny >= N || nx < 0 || ny >= M) continue; if (adj[ny][nx] == 0) continue; if (visited[ny][nx]) continue; dfs(ny, nx); } return; } int main() { cin >> T; for (int i = 0; i < T; i++) { cin >> M >> N >> K; cnt = 0; memset(visited, false, sizeof(visited)); memset(adj, 0, sizeof(adj)); for (int j = 0; j < K; j++) { int y, x; cin >> x >> y; adj[y][x] = 1; } for (int y = 0; y < N; y++) for (int x = 0; x < M; x++) { if (visited[y][x]) continue; if (adj[y][x] == 1) { dfs(y, x); cnt++; } } cout << cnt << '\n'; } return 0; }

  • c++
  • 코딩-테스트
요가인 댓글 1 좋아요 0 조회수 266

6-D 시간복잡도 관련 질문입니다

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님 수업 듣는 중에 의문점이 생겨서 질문드립니다. 6-D(7795) 번 문제 같은 경우에는 입력값의 범위가 1~20000까지로 완전 탐색으로 풀게 된다면 n^2의 시간복잡도를 가져 시간 초과가 날 줄 알았습니다. 하지만 그렇게 풀어보니 시간 초과가 나지 않고 정상적으로 통과가 되네요 어떤 이유 때문인지 궁금합니다! #include<bits/stdc++.h> using namespace std; int T, N, M, num; vector<int> A; vector<int> B; int main() { cin >> T; while (T--) { cin >> N >> M; A = vector<int>(N); B = vector<int>(M); for (int i = 0; i < N; i++) cin >> A[i]; for (int i = 0; i < M; i++) cin >> B[i]; sort(A.begin(), A.end()); sort(B.begin(), B.end()); int cnt = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { if (A[i] > B[j]) { cnt++; } else break; } } cout << cnt << "\n"; } return 0; }

  • c++
  • 코딩-테스트
조태 댓글 1 좋아요 0 조회수 241

경우의 수 질문드립니다.

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 큰돌님 코드 질문은 아니고 경우의 수 질문인데요 x, head1, head2 -> 3가지 x, eye -> 2가지 x, patns1, pant2 -> 3가지 아무것도 입지않는 경우의 수 1을 빼주는 것이 알몸인 상태인 경우를 빼주는 것이니 무조건 위의 경우에도 무조건 1만 빼줘서 3 x 2 x 3 -1 = 11 로 생각하는게 맞는건가요? 듣다보니 헷갈려서 질문 드려봅니다

  • c++
  • 코딩-테스트
권석기 댓글 2 좋아요 0 조회수 246

반례 궁금합니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/4dc8f27d6a09443a916061fc1ac7800c 반례가 궁금합니다. dfs와 비트마스킹을 함께 사용해서 구현했고 테스트케이스 및 질문게시판의 반례도 다 통과했습니다만 1%대에서 바로 오답이 나옵니다. p.s. 비트마스킹 챕터에 있는 문제라 비트마스킹을 써봤는데, 굳이 이런 문제에 비트마스킹을 쓸 필요가 없었을까요? 앞으로 코테를 풀 때 메모리가 부족할 만큼 수의 범위가 크면 비트마스킹만 쓰면 될까요? 이 문제도 노드가 최대 1000개에 엣지가 1000000개 까지 가능하니 비트마스킹을 써야겠다고 생각습니다.

  • c++
  • 코딩-테스트
Maruche 댓글 2 좋아요 0 조회수 289

while 반복문의 조건에 대해 질문있습니다.!

해결됨

코딩테스트 [ ALL IN ONE ]

안녕하세요 선생님 강의 잘듣고 있습니다.! while 반복문의 조건이 l == r 일때까지 반복문을 실행하는건 이해했는데 왜 조건이 l < r 인지 잘이해가 안됩니다ㅠ 혹시 while 반복문의 조건을 l != r 이라고 해도 되는건가요?

  • python
  • 코딩-테스트
  • 알고리즘
asdf123 댓글 1 좋아요 1 조회수 387

8-B 문제 질문

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 큰돌선생님 매번 좋은 강의 감사합니다.. 문제를 풀다가 못풀어서 선생님 코드를 보고 강의를 시청하였는데요, rpg함수는 dp배열을 갱신하는 재귀함수인데 기저사례가 없는 이유가 궁금합니다. 아직 제가 코드를 완전히 이해하지 못하는것 같은데, 제 생각으로는 선생님코드 for(int p = 0; p <= pnt; p++){ int nextSTR = min(1000, STR + p); int nextINT = min(1000, INT + pnt - p); ret = max(ret, rpg(nextSTR, nextINT)); } 이 부분에서 pnt가 0이더라도 계속 rpg() 함수를 호출할것 같은데 제가 어느부분을 이해하지 못하는 건가요??

  • c++
  • 코딩-테스트
이명운 댓글 2 좋아요 0 조회수 240

6-j 범위체크 조건 질문드립니다

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

https://www.acmicpc.net/source/share/c705165d9da648cab807897686bcb320 논리로직은 이해를 한거같은데 아직도 이분탐색에서 left와 right를 체크하는부분에서 mid값을 걸러내는부분이 잘 이해가가지않네요 right에서 mid값을 가지고오나 left를 체크할떄 가지고오나 결과는 같을거라고 생각했는데 아직도 이부분이 잘 이해가가지않습니다 ㅜㅜ

  • c++
  • 코딩-테스트
이선용 댓글 2 좋아요 0 조회수 200

계단오르기 질문

해결됨

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

강의를 듣기에 앞서 계단오르기 문제를 DFS로 풀었습니다. 아래와 같이 문제를 풀어도 문제가 없을까요? // 계단 오르기 function solution(target){ const count = [1,2]; const answerArr = [] const set = [] let answer = 0; function dfs(n){ if(n>target) return if(n === target){ answer+=1 answerArr.push([...set]) return } for(let el of count){ set.push(el) dfs(n+el) set.pop() } } dfs(0) console.log(answerArr) return answer }; console.log(solution(7)) console.log(solution(8)) console.log(solution(4))

  • javascript
  • 코딩-테스트
  • 다이나믹프로그래밍
손준석 댓글 2 좋아요 1 조회수 298

defaultdict() 함수의 선언부가 궁금해요

해결됨

코딩테스트 [ ALL IN ONE ]

다익스트라 Network Delay Time 강의에 가중치 그래프 구현을 위해 사용된 defalutdict() 함수의 내용이 없네요 어떻게 선언하셨는지 궁금합니다.

  • python
  • 코딩-테스트
  • 알고리즘
한동찬 댓글 1 좋아요 1 조회수 283

반례에 대해서 질문드립니다

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

제가 작성한 코드 http://boj.kr/7e8f78a1feb2433fa70b2a847a23cfff 첫 번째 질문 제가 작성한 코드는 반례처리를 하지 않았는데 통과됐습니다. 이 문제는 시작점과 도착점이 같은 경우에도 반례처리가 필요하지 않은 문제 아닌가요? 두 번째 질문 방문하지 않은 정점을 방문할 때, cnt[there] += cnt[here] 인 이유가 무엇인가요? 저는 cnt[there] = cnt[here] 라고 생각합니다.

  • c++
  • 코딩-테스트
neo2 댓글 1 좋아요 0 조회수 271

6-J 질문 드립니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

#include<iostream> #include<algorithm> #include<stack> using namespace std; typedef long long ll; ll n, m, ans, last_su; ll a[10004]; int check(ll mid){ ll cnt =0; for(int i=0; i<m; i++){ cnt += mid / a[i] + 1; } return cnt >= n; } ll last_check(){ ll cnt=0; for(int i=0; i<m; i++){ cnt += (ans-1) / a[i] + 1; } return n - cnt; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for(int i=0; i<m; i++){ cin >> a[i]; } // 이 부분 ll l=0, r=6*1e10+4; while(l <= r){ ll mid = (l+r)/2; if(check(mid)){ r = mid-1; ans = mid; } else{ l = mid+1; } } if(ans){ last_su = last_check(); }else{ cout << n << '\n'; return 0; } vector<ll> v; for(int i=0; i<m; i++){ if(ans % a[i] == 0){ v.push_back(i+1); } } cout << v[last_su-1] << '\n'; } 다른 부분은 아니고 위의 코드를 제출 했을 때 정상적으로 맞았다고 나오는데, 시험삼아 while(l<=r) 위의 줄에서, 이분탐새하기 직전 l과 r을 선언하는 줄에서 r = 1e18로 정의하였을 때 오답이 나옵니다. 1e18도 long long의 범위 이내인데 어째서 오답이 나오는지 모르겠습니다.

  • c++
  • 코딩-테스트
토모시키 댓글 1 좋아요 1 조회수 231

해당 코드가 테스트 케이스 2개는 통과했는데 나머지 부분에서 오류가 났습니다.

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

import java.util.*; import java.io.*; public class Main { static int[][] graph; static boolean[][] visited; static int N; static int[] answer; static int real; public static void solution(int y, int x) { // y : 학생, x : 학년 visited[y][y] = true; // 자신을 카운팅하지 않기 위한 방법 for (int i = 1; i <= N; i++) { //세로 비교 (반 같은지 비교) if (graph[i][x] == graph[y][x] && !visited[y][i]) { answer[y]++; visited[y][i] = true; } } int max = Integer.MIN_VALUE; // answer 배열에서 최댓값 찾기 for (int i = 0; i < answer.length; i++) { if (answer[i] > max) { max = answer[i]; real = i; } } } public static void main(String args[]) throws IOException{ // 0. 입출력 구현 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); graph = new int[N+1][6]; visited = new boolean[N+1][6]; answer = new int[N+1]; for (int i = 1; i <= N ; i++) { String[] str = br.readLine().split(" "); for (int j = 1; j <= 5; j++) { graph[i][j] = Integer.parseInt(str[j - 1]); } } for (int i = 1; i <= N; i++) { for (int j = 1; j <= 5; j++) { solution(i ,j); } } bw.write(String.valueOf(real)); bw.close(); br.close(); } } 피드백 요청합니다..!

  • java
  • 코딩-테스트
버럼 댓글 1 좋아요 0 조회수 463

간단한것 같아 toUpperCase로 후딱 풀었습니다!

미해결

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

감사합니다. function solution(question) { return question.toUpperCase(); } console.log(solution("ItisTimeToStudy"));

  • javascript
  • 코딩-테스트
rhkdtjd_12 댓글 1 좋아요 0 조회수 333

시간초과

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요, 시간초과로 통과하지 못해서 질문드립니다. http://boj.kr/c89e043975f349bbb7a4066422235fc0 이전에 단순히 dfs만 써서 풀었을 때와 로직은 동일합니다. 다만 이번엔 visited를 2차원 벡터가 아닌 int형 변수 하나로 처리했고 방문하는 경우엔 | 연산으로 비트를 켜줬고 방문을 마치고 나선 & ~(1<<idx) 와 같이 비트를 꺼줬습니다. 선생님의 코드와 제 코드의 함수 호출을 비교해보니 예제의 경우에선 함수 호출 횟수도 동일했습니다. 그런데 시간초과가 생기는 이유는 무엇일까요?

  • c++
  • 코딩-테스트
Maruche 댓글 1 좋아요 0 조회수 227

오답 확인 부탁드립니다.

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

import java.time.Year; import java.util.*; class Main { public static int solution(int N, int M, int[] arr) { int answer = 0; for (int lt = 0; lt < N; lt++) { int sum = 0; int rt = lt; while (sum < M) { sum += arr[rt]; rt++; if (rt >= N) break; if (sum == M) { answer++; } } } return answer; } public static void main(String[] args){ Scanner kb = new Scanner(System.in); int N = kb.nextInt(); int M = kb.nextInt(); int[] arr = new int[N]; for (int i = 0; i < N; i++) { arr[i] = kb.nextInt(); } System.out.println(solution(N, M, arr)); } } 오답이 나와 확인해봤습니다.답이 1씩 낮아서 확인해보았는데(테스트의 N=100, M=100 지점), answer가 1씩 낮았습니다.답지와 제코드의 결과값을 비교해보았는데 너무 다른 양상이 나와 질문합니다. 답지 answer: 18 lt: 50 rt: 83 sum: 100 answer: 19 lt: 53 rt: 86 sum: 100 answer: 20 lt: 55 rt: 88 sum: 100 answer: 21 lt: 58 rt: 91 sum: 100 answer: 22 lt: 60 rt: 93 sum: 100 answer: 23 lt: 65 rt: 99 sum: 100 제 코드 answer: 16 lt: 46 rt: 77 sum: 100 answer: 17 lt: 49 rt: 83 sum: 100 answer: 18 lt: 50 rt: 84 sum: 100 answer: 19 lt: 53 rt: 87 sum: 100 answer: 20 lt: 55 rt: 89 sum: 100 answer: 21 lt: 58 rt: 92 sum: 100 answer: 22 lt: 60 rt: 94 sum: 100 어디가 잘못된걸까요?

  • java
  • 코딩-테스트
공희배 댓글 1 좋아요 0 조회수 290

7-J 왜 왼쪽부터 하면 틀리나요? ㅠㅠ

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

공유 소스 보기 (acmicpc.net)

  • c++
  • 코딩-테스트
조현성 댓글 1 좋아요 1 조회수 337

6-G 조건체크에서 질문이있습니다

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/3aa1410045524133b6e2b5ea6da1bcce 현재 해당코드를 통해서 정답은 맞췄는데 제가생각했던건 MID-1, MID+1로 조건탐색을하고 left <= right 조건을 통해서 left가 조건탐색이 끝났을때 기준으로 left가 정답이라고 생각하고 이때 left가 max조건을 넘겨버리면 체크하는걸로 해결했는데 설명코드에서 mid를 ret으로 체크되는부분이 잘 이해가가지않아 질문을남깁니다 항상감사합니다

  • c++
  • 코딩-테스트
이선용 댓글 1 좋아요 0 조회수 222

7-E 끝에서 return 1하는건 알겠는데 dp배열을 초기화 안해도 되나요?

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

왜 안해도 결과가 잘 나오는지 궁금하네요 이전 테스트 케이스 결과가 dp에 반영되어있지않나요? 테스트 케이스끼리도 같은 구조가 반복되어서 dp를 초기화 안해도 되는건가요

  • c++
  • 코딩-테스트
조현성 댓글 1 좋아요 0 조회수 207

제가 풀던 방식과 이전에 배운 for of를 이용해서 두가지 방법으로 풀어보았습니다

미해결

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

감사합니다. function solution2(question, word) { let i = 0; for (const x of question) { if (x === word) i++; } return i; } function solution(question, word) { return question.split(word).length - 1; } console.log(solution("COMPUTERPROGRAMMING", "R")); console.log(solution2("COMPUTERPROGRAMMING", "R"));

  • javascript
  • 코딩-테스트
rhkdtjd_12 댓글 1 좋아요 0 조회수 182

인기 태그

인프런 TOP Writers

주간 인기글