inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

백준 2251 C++ 질문 있습니다.

미해결

Do it! 알고리즘 코딩테스트 with C++

해당 강의가 없어 직접 질문 하게 되었습니다. 2251번 책을 보면 이동 가능한 경로가 A -> B, A ->C, B -> A, B -> C, C -> A, C ->B 로 총 6개인것은 이해를 했습니다. 근데 최초의 물이 C에만 담겨있는데 왜 sender, receiver를 6크기의 배열로 선언해주고 아래처럼 for문을 돌리고 없는 물을 처음에 6개의 경로에 따라 퍼다 나르는지 이해가 잘 가지 않습니다. for (int k = 0; k < 6; ++k) { // next[0] = a, next[1] = b, next[2] = c int next[] = { a, b, c }; next[Receiver[k]] += next[Sender[k]]; next[Sender[k]] = 0; // 대상 물통의 용량보다 물이 많아 넘칠 때 if (next[Receiver[k]] > now[Receiver[k]]) { // 초과하는 만큼 다시 이전 물통에 넣음 next[Sender[k]] = next[Receiver[k]] - now[Receiver[k]]; // 대상 물통은 최대로 채움 next[Receiver[k]] = now[Receiver[k]]; } // A와 B의 물의 양을 통하여 방문 배열 체크 if (visit[next[0]][next[1]] == false) { visit[next[0]][next[1]] = true; q.push(make_pair(next[0], next[1])); // A의 물의 양이 0일 때 C의 물의 용량을 정답 변수에 저장 if (next[0] == 0) { ret[next[2]] = true; } } }

  • c++
  • 코딩-테스트
  • 알고리즘
starkshn 댓글 2 좋아요 0 조회수 421

1-F 질문 있습니다!

미해결

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

http://boj.kr/7687fd79d7f14a06876f12bc7d02e5a7 안녕하세요 선생님 제 생각이 틀린 건 분명한데 어떻게 틀렸는지 이해가 잘 안됩니다 if(s[i] >= 'A' && s[i] <= 'Z'){ s[i] = s[i] + 13; if(s[i] > 'Z') s[i] = s[i] - 26; }else if(s[i] >= 'a' && s[i] <= 'z'){ s[i] = s[i] + 13; if(s[i] > 'z') s[i] = s[i] - 26; } 아마 이부분에서 논리적인 오류가 있는것 같은데 잘 모르겠습니다 제 생각에 13을 먼저 더하고 그 이후에 범위를 벗어난 부분만 26을 빼면 될거라 생각했는데 이게 왜 안되는지 이해가 잘 안됩니다. ps. 새해 복 많이 받으세요

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

2-E 분할 정복 반례를 도저히 못찾겠어요

해결됨

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

안녕하세요 큰돌님. 2-E 쿼드 트리 문제 반례를 도저히 못찾겠습니다. 97% 쯤인가 여기서 자꾸 실패가 떠요.백준 질문 게시판에 올라가있는 테스트 케이스를 넣어도 다 통과는 하는데 무슨 반례에 걸리는지 도무지 감이 안잡힙니다. 한번 봐주실 수 있나요? #include <bits/stdc++.h> using namespace std; int N, adj[70][70]; string input; string go(int sy, int sx, int size) { int ey = sy + (size - 1); int ex = sx + (size - 1); // cout << sy << " " << sx << " " << ey << " " << ex << '\n'; if (size == 2) { if (adj[sy][sx] == adj[sy][ex] && adj[sy][ex] == adj[ey][sx] && adj[ey][sx] == adj[ey][ex] && N > 2) return to_string(adj[sy][sx]); string subret = "("; subret += to_string(adj[sy][sx]); subret += to_string(adj[sy][ex]); subret += to_string(adj[ey][sx]); subret += to_string(adj[ey][ex]); subret += ")"; return subret; } string lt = go(sy, sx, size / 2); string rt = go(sy, sx + size / 2, size / 2); string lb = go(sy + size / 2, sx, size / 2); string rb = go(sy + size / 2, sx + size / 2, size / 2); // cout << "lt: " << lt << " rt: " << rt << " lb: " << lb << " rb: " << rb << '\n'; if (lt.size() == 1 && lt == rt && rt == lb && lb == rb && N > 2) return lt; string ret = "("; ret += lt; ret += rt; ret += lb; ret += rb; ret += ")"; return ret; } int main() { cin >> N; for (int i = 0; i < N; ++i) { cin >> input; for (int j = 0; j < N; ++j) { adj[i][j] = input[j] - '0'; } } string ret = ""; if (N == 1) ret = "1"; else { ret = go(0, 0, N); } cout << ret << '\n'; return 0; }

  • c++
  • 코딩-테스트
박희천 댓글 2 좋아요 0 조회수 266

오타가 있는 것 같아서요.

해결됨

글로벌 개발자로 성장하는 < 코딩 실무 영어 /> 마스터 클래스

한국인 머리 아프게 만드는 영어의 특징의 14:03초에 Ask for의 예제가 Ask for the manager for confirmation. 으로 나오는데 Ask the manager for confirmation.으로 되어야 하는 거 아닌가 해서요. 강의 재밌네요. 잘 듣고 있습니다.

  • 영어
  • 코딩-테스트
  • 커뮤니케이션
류연복 댓글 1 좋아요 1 조회수 350

퀴즈 답안

미해결

비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)

퀴즈 답안지는 따로 제공되지 않나요?

  • javascript
  • 코딩-테스트
  • 알고리즘
정준영 댓글 1 좋아요 0 조회수 486

max와 findindex 사용해서 풀어도 되나요?

미해결

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

function solution(arr) { let answer = Array.from({ length: arr.length }, () => 0); let rank = 1, max = Number.MAX_SAFE_INTEGER; for (let i = 1; i <= arr.length; i++) { let idx = arr.findIndex((val) => val === Math.max(...arr)); if (arr[idx] === max) { // 동점자이면 answer[idx] = rank; } else { answer[idx] = i; rank = i; } max = arr[idx]; arr[idx] = -1; } return answer; } let arr = [87, 89, 92, 100, 76]; let arr2 = [20, 20, 20, 10, 50, 15]; console.log(solution(arr)); 저 혼자 풀었을 때 이중 for문이 아닌 위와 같이 풀었는데 혹시 이렇게 풀어도 되는걸까요?

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

시간 복잡도(7.소수의 개수(에라토스테네스 체))

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

안녕하세요 해당 문제의 답을 스스로 작성해보았는데요 이렇게 했더니 n의 숫자가 작을 때는 잘 작동 되지만 숫자가 커지면 작동이 안됩니다. 선생님의 코드처럼 이중 for문을 사용했는데 선생님의 코드는 잘 작동이 되고 제 코드는 잘 작동이 되지 않습니다.. 선생님의 코드는 배수를 활용해서 더 빠를 것이라고 생각이 되긴 하는데, 제 코드를 어떻게 수정하면 좋을까요 n = int(input()) cnt =[0] * (n+1) count =0 for i in range(1,n+1): for j in range(2,n+1): if i % j == 0: cnt[i] = cnt[i] + 1 if cnt[i] == 1: count = count +1 print(count)

  • python
  • 코딩-테스트
고서현 댓글 1 좋아요 0 조회수 258

for문 범위 관해서 질문드립니다

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

섹션 2의 3번 문제에서는 첫번째 for문에 n을 넣어서 돌렸는데 섹션 2의 4번 문제에서는 첫번쨰 for문에 a를 넣어서 돌렸습니다. 두 문제가 비슷한 유형인거같아서 왜 같은 방식으로 for문을 돌리지 않는지 헷갈려서 질문남깁니다

  • python
  • 코딩-테스트
이준혁 댓글 1 좋아요 0 조회수 201

BFS 당근마킷 엔지니어 승원이 문제 제꺼 한번 봐주실 수 있나요?

해결됨

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

안녕하세요 큰돌님. 문제 해답 보기 전에 영상 멈추고 풀기 시작했다가 1시간이나 까먹었네요.... 이래도 성장 할 수 있을지 고민입니다. 개인적인 고민은 뒤로 두고 다음의 코드로 풀긴 했는데 이게 맞는 코드인지 봐주실수 있나요? 항상 질문 답변 해주셔서 감사합니다. #include <bits/stdc++.h> using namespace std; int N, M, startY, startX, destY, destX, adj[104][104]; int dy[] = {1, 0, -1, 0}; int dx[] = {0, 1, 0, -1}; map<pair<int, int>, int> visited; void bfs(int y, int x) { pair<int, int> pos = {y, x}; visited[pos] += 1; queue<pair<int, int>> q; q.push(pos); while (q.size()) { auto loc = q.front(); q.pop(); for (int i = 0; i < 4; ++i) { int ny = loc.first + dy[i]; int nx = loc.second + dx[i]; pair<int, int> prevOffset = {loc.first, loc.second}; pair<int, int> nextOffset = {ny, nx}; if (ny < 0 || nx < 0 || ny >= M || nx >= N) continue; if (visited[nextOffset]) continue; if (adj[ny][nx] == 0) continue; visited[nextOffset] = visited[prevOffset] + 1; q.push(nextOffset); if (ny == destY && nx == destX) q = queue<pair<int, int>>(); } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> M; cin >> startY >> startX; cin >> destY >> destX; for (int i = 0; i < N; ++i) for (int j = 0; j < M; ++j) cin >> adj[i][j]; bfs(startY, startX); cout << visited[make_pair(destY, destX)] << "\n"; return 0; }

  • c++
  • 코딩-테스트
박희천 댓글 1 좋아요 0 조회수 188

leetCode - Two Sum 문제 Memory Limit Exceeded 에러

해결됨

코딩테스트 [ ALL IN ONE ]

class Solution(object): def twoSum(self, nums, target): def backtrack(start, curr): # base case : 2개의 합을 더해서 target과 같으면 if len(curr) == 2 and sum(nums[i] for i in curr) == target: return curr # recursion : for i in range(start, len(nums)): curr.append(i) res = backtrack(i + 1, curr) if res: return res curr.pop() return None return backtrack(0, []) https://leetcode.com/problems/two-sum/submissions/1130560186/ 이 코드로 작성해서 leet-code의 two sum 문제에 제출해봤을 때 Memory Limit Exceeded 에러가 나는건 어떻게 해결해야 할까요?

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

14번만 채점파일 없다는걸 미리 알려줬으면 좋겠어요

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

채점파일 찾느라 3번정도 다운로드 받고 찾아 해맸습니다. 공유하는 파일에 설명을 같이 넣는다 던지 강의 끝까지 보기전에 미리 알게 했으면 더 편리 했을것 같습니다.

  • python
  • 코딩-테스트
김민수 댓글 1 좋아요 0 조회수 288

3강 누적합 11660 2차원 배열 문제

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

안녕하세요! 강의영상과 백준 문제에서 입력 순서를 x1,y1,x2,y2 형식으로 입력을 받는데 이렇게 입력할 경우 결과가 반대로 나오는거 같습니다. ex. 1,2,1,2일 경우 2,1,2,1의 결과가 출력 인덱싱을 graph[y][x] 형태로 진행하여 파생된 문제 같습니다. 그러므로 입력을 y1,x1,y2,x2로 변경하거나 2차원 배열 인덱싱을 graph[x][y] 형태로 변경해야할 것 같습니다. 제가 이해한게 맞나요? 항상 좋은 강의해주셔서 감사드립니다.

  • python
  • 코딩-테스트
  • 알고리즘
쭈뚱쓰 댓글 2 좋아요 1 조회수 364

sstream에 있는 split()을 써도 되나요?

미해결

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

#include <sstream> #include <vector> int main() { std::string str = "1, 2, 3, 4, 5"; // str을 ,로 분리합니다. std::vector<std::string> tokens = split(str, ","); // 분리된 토큰을 출력합니다. for (const auto& token : tokens) { std::cout << token << std::endl; } } bard에 물어보니 string을 vector로 바꿔주는 split 함수가 있다고 하는데, 코딩 테스트 환경에선 이런 라이브러리를 사용 할 수가 없어서 함수를 외워서 써야하는건가요?

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

교안 116페이지 Ralo구조체 출력 결과 질문입니다.

미해결

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

안녕하세요, 강의를 잘 듣고 실습 중 질문이 있습니다. 알고리즘 교안 116페이지 Ralo구조체 예제 코드 진행 시 출력물에 대한 질문입니다. #include <bits/stdc++.h> using namespace std; struct Ralo { int a, b; double c, d, e; }; void print(Ralo ralo) { cout << ralo.a << " " << ralo.b << " " << ralo.c << " " << ralo.d << " " << ralo.e << '\n'; } int main() { Ralo ralo = {1, 1, 1, 1, 1}; print(ralo); vector<Ralo> ret; ret.push_back({1, 2, 3, 4, 5}); ret.push_back({1, 2, 3, 4, 6}); ret.push_back({}); ret.push_back({1, 3}); for (Ralo ralo : ret) { print(ralo); } return 0; } 위 예시에서 a, b의 자료형은 int이고 c, d, e 의 타입은 double라고 먼저 선언을 하게 되는데, main함수에서 출력 시 왜 일관되게 정수형으로 출력되는지 이해가 안됩니다.(형변환이 일어나야하거나, 타입 불일치에 따른 에러가 떠야 하는게 맞는거 아닌가요 ?!) 제가 부족한 개념이 많이 있을 수도 있으니 너그럽게 읽어주시면 감사하겠습니다. ^^;;

  • c++
  • 코딩-테스트
Junghoon Lee 댓글 1 좋아요 0 조회수 249

5-K 문제 틀린 로직인가요?

미해결

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

안녕하세요 큰돌선생님 매번 좋은강의와 코드 감사합니다 강의와 수업을 복습하며 문제를 다시 풀어보았는데요, 제 처음 풀이는 플러드 필을 사용하면 깔끔하게 풀 수 있을것 같아서 적용하여 풀어보았는데, 문제의 예제조차 통과하지 못하여 그냥 새롭게 큐를 계속 새로 만들어서 하는 방식으로 수정하여 통과하였습니다. 근데 첫번째 접근방법의 로직에서 틀린부분이 없다고 생각하는데 혹시 어디가 틀린것인지 봐주실 수 있으신가요? 새롭게 미세먼지가 퍼지는 부분을 큐에 계속 담는 방식을 사용하였습니다. 첫번째 틀린 코드 http://boj.kr/cdaa0817a0054c8aaa05db4a94fd4cc1 수정후 정답 코드 http://boj.kr/48dc28720f1840d78af14656ac682d39

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

변수 선언에 대한 결과 차이

해결됨

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

#include <bits/stdc++.h> using namespace std; string s; int cnt[26]; int main(){ cin >> s; for(char a : s){ cnt[a-'a']++; } for(int i = 0; i <= 26; i++){ cout << cnt[i] << " "; } return 0; } 이렇게 실행할 경우 baekjoon을 복붙하면 정상적인 결과가 나옵니다. 나중에 복습할 때 안 보고 풀어봤습니다만... 변수 선언을 다음과 같이 하니까 결과 값이 달라집니다. int cnt[26]; string s; 사실상 순서만 바뀌었는데 왜 이렇게 결과가 바뀌는지 궁금합니다.

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

[최대 길이 연속부분수열] 틀린 이유

미해결

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

import java.util.*; class Main { public int solution(int n, int m, int[] arr) { int lt = 0, sum = 0, max = 0, count = 0; for(int rt = 0; rt < n; rt++) { if(arr[rt] == 1) { sum += arr[rt]; } else if (arr[rt] == 0) { if(count++ < m) { sum += 1; } else { if (sum >= max) { max = sum; sum = 0; lt ++; rt = lt; count = 0; } } } } return max; } public static void main(String[] args) { Main T = new Main(); Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) { arr[i] = in.nextInt(); } System.out.print(T.solution(n, m, arr)); } } 논리적으로 틀린건 없는거 같고, 예시코드도 틀린게 없는데 왜 오답이 나오는지 모르겠습니다 !!

  • java
  • 코딩-테스트
Park Jiho 댓글 1 좋아요 0 조회수 455

테스트 케이스 하나가 오답인데 어떤 부분이 문제인지 모르겠습니다ㅠ

미해결

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

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; class Main { public static void main(String[] args) throws IOException { Main T = new Main(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); String str2 = br.readLine(); System.out.println(T.solution(str1, str2)); } public static String solution(String str1, String str2) { HashMap<Character, Integer> map1 = new HashMap<>(); HashMap<Character, Integer> map2 = new HashMap<>(); for (char x : str1.toCharArray()) { map1.put(x, map1.getOrDefault(x, 0) + 1); } for (char x : str2.toCharArray()) { map2.put(x, map2.getOrDefault(x, 0) + 1); } String answer = ""; for (char x : map1.keySet()) { if (map1.containsKey(x) == map2.containsKey(x)) { if (map1.get(x) == map2.get(x)) answer = "YES"; else answer = "NO"; } } return answer; } } 테스트케이스 하나를 통과하지 못하는데 제가 생각하지 못한 부분이 있는지 궁금합니다! 코드가 효율적이지 않을 수는 있으나 저렇게 해도 풀리지 않을까? 해서 작성해봤는데.. 뭐가 문제일까요 테스트 케이스 ABCDqtqtqEFqGHIJKLMNOPQRSTUVWetagdgXYabcdefghijklmnopqrstuwxyz aBcdewrqwtqFghIJklMnOpqrsTuegagaeVxyYAbCDEfGHijKLmNoPQRStUwWXz

  • java
  • 코딩-테스트
  • hashmap
tjrwls08088 댓글 1 좋아요 0 조회수 213

3-K 시간초과 질문드립니다.

해결됨

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

http://boj.kr/e1c3caaa80904ade933b274903722b31 시간초과 해결을 못하겠어서 어디 부분이 틀린건지 잘 모르겠습니다 ㅠㅠ

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

혹시 예외가 있을까요?

미해결

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. function solution(board, moves) { let answer = 0; //count let stack = []; //바구니 //크레인 for문 돌리기 for (const x of moves) { //크레인 위치, index에 맞게 설정 let idx = x - 1; //borad 체크 for (let i = 0; i < board.length; i++) { //인형 const v = board[i][idx]; //0 & null이면 그냥 넘기기 > 다음값을 넣어야 함 //null = 이미 바구니에 들어간 값 if (v !== 0 && v !== null) { //이미 바구니에 있는 경우 if (v === stack.at(-1)) { let pop = stack.pop(); answer += 2; } else stack.push(v); board[i].splice(idx, 1, null); break } } } return answer; } let a = [[0, 0, 0, 0, 0], [0, 0, 1, 0, 3], [0, 2, 5, 0, 1], [4, 2, 4, 4, 2], [3, 5, 1, 3, 1]]; let b = [1, 5, 3, 5, 1, 2, 1, 4]; console.log(solution(a, b));

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

인기 태그

인프런 TOP Writers

주간 인기글