묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-B 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.이 부분이 이해가 되질 않습니다.HHT인 경우 '001'이 되어야 하지만, value가 1부터 *2로 증가해서 HHT에 해당하는 값을 저장할 때, a[i] | value (=4)에 의해 '100'이 저장되지 않나요??비트의 순서가 뒤집힌거 같은데 상관없나요? +위에 go 함수에서 if(a[j] & i)로 비교에 a[j]를 사용하는데, a[j]에 4('HHT'를 저장했을 경우)가 저장되어 있으면 '100' 비교하는데 순서가 뒤집힌거 같아서 헷갈립니다. a[j]에 저장되어 있는 값으로 나타내는 동전이 어차피 대칭이기 때문에 로직이 통과하는 것인가요?
-
해결됨김영한의 실전 자바 - 중급 2편
스트림 강의?
안녕하세요.이번에 기존 개념을 다시 익히는 것 플러스로 stream에 대한 개념까지 배울수있을까 싶어 일단 강의수강신청을 하게 되었습니다ㅎ..혹시 stream에 관련된 내용이 어떤 강의에 있는지 문의드립니다.없다면 출시 생각이 있으신지 궁금하네요 ㅠㅜ..
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
선생님 제발 한 번만 도와주세요
public class Main { public static int solution(int N, int[][] numberList){ int answer = 0; int max = 0; for (int i = 0; i < N; i ++){ int cnt = 0; for (int j = 0; j < N; j ++){ for (int k = 0; k < 5; k ++){ if (numberList[i][k] == numberList[j][k]){ cnt++; break; } } } if (cnt > max){ max = cnt; answer = i + 1; } } return answer; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int [][] numberList = new int[N][5]; for (int i = 0; i < N; i++) { String input = br.readLine(); String[] numberStrings = input.split(" "); for (int j = 0; j < N; j++){ numberList[i][j] = Integer.parseInt(numberStrings[j]); // 입력부분은 잘 됨. } } System.out.print(solution(N, numberList)); } }선생님 코드와 다른 부분은 int [][] numberList = new int[N][5]; 이 부분과 for문의 시작값을 0으로 시작한다는 것입니다. 그치만 오답이 뜨네요.... 뭔가 놓치고 있는 게 있을까요??
-
해결됨자바 코딩테스트 - it 대기업 유제
예제 3번의 정답이 이해가 되지 않아요 선생님 ㅜㅜ
안녕하세요 선생님.초급강의부터 강의 잘 듣고있는 학생입니다. 선생님 덕분에 22년도에 취업 성공했어요^^ 감사합니다.다름이아니라.. 세 번째 예제에서 nums가 [2,0,0,0,0,2]일 때, 양 끝에 하나씩 스프링쿨러를 설치하면 모든 범위가 커버되는 게 아닌가요..? ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-F 질문입니다 :) '0'을 빼주는 이유를 잘 모르겠습니다.
안녕하세요 선생님 🙂문제 풀이 중 이해가 되지 않는 부분이 있어서 질문드립니다.선생님께서는 입력받은 문자열 중 숫자는 vector<int> num에, 연산자는 vector<char> oper에 저장하셨는데요, 숫자 저장 방식이 이해가 되지 않습니다.for (int i = 0; i < N; i++)if (i % 2 == 0) num.push_back(s[i] - '0');여기서 숫자를 vector에 넣을 때마다 '0'을 빼는 이유가 무엇인지 잘 모르겠습니다 ㅠㅠ문자열에서 마지막 공백 문자열('\0')을 빼야 하는 것은 알고 있지만, 이건 공백 문자열도 아닐 뿐더러 push_back마다 빼주는게 이해가 되질 않습니다.추가로, go함수 안에서if (here + 2 <= num.size() - 1)에서 이 경우를 왜 here + 2로 하는지 설명해주시면 감사하겠습니다..!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-D에서 일단 VScode에서는 잘 나오는데 코테에 올리면 틀리다고 나옵니다
처음에 reverse를 생각하지 않고 처음에 바로 뛰어들어서 풀었는데 정작 코테 사이트에 올려서 살펴 보면은 한 94퍼 정도 채점하다가 바로 틀리다고 나옵니다.제가 신경을 쓰지 못한 부분이나 또는 제대로 초기화가 안되어서 그런건지 알고싶습니다.http://boj.kr/ebee0785d4f24afda72c41c59ccb5596
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 가능할까요?
const solve = (a) => { let p1 = 0, p2 = 1, cn = a[p1], answer = 0; while(p1 < a.length && p2 < a.length) { if (cn < 6) { cn += a[p2]; p2++; } else if (cn === 6) { answer ++; p1 ++; cn = a[p1]; p2 = p1 + 1; } else { p1 ++; cn = a[p1] p2 = p1 + 1 } } console.log(answer) }
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
접근방식과 방법론의 차이가 뭔가요?
안녕하세요, 좋은 강의 제공해주셔서 감사합니다.그리디, dp 는 접근방식이라고 말씀하셨고,나머지 bfs 등은 방법론이라고 하셨는데 이게 정확히 무슨 의미인지 궁금합니다. 학술/엔지니어링 적인 term 이 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 런타임 에러 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/64fef1f0d3504d18ae0a5b33d0b81a25안녕하세요! 온라인 C++ 컴파일러에서 돌려본 결과 다른 문자열에서는 정상적으로 출력되지만 "A rope may form )( a trail in a maze." 해당 문자열에서만 아무것도 출력이 되지 않습니다.제 생각으론 스택에 ) ( 두개가 남아 스택 사이즈가 0이 아니기에 no를 출력해야 하지만 그렇지 않아 질문드립니다...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
.end()에 대해서
안녕하세요컨테이너의 끝 값 다음의 위치를 알려주는 함수로 .end()를 사용한다고 알 고 있었는데,교안 p 104에서는 .end()가 컨테이너의 끝 다음의 값이 아닌 끝 값을 가리키는 그림으로 보여지는데요.혹시 이부분은 그림이 잘못된것일까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-H 질문이요
http://boj.kr/79ba1593f25043e8bc479c1ec621f4ecvscode, dev c++에서는 출력이 잘되는데백준에서는 계속 런타임에러가 뜨네요어떤게 문제인지 잘 모르겠습니다a는 측정한 온도의 배열이고p는 쿼리합 배열s는 인접한 k개의 합 배열이고각각 구한 다음에 s배열의 요소중 최대값을 출력하도록 했습니다.1. 런타임에러가 왜 뜨는지2. 강의의 코드에서 psum의 크기가 100001로 선언되어 있는데 psum 배열이 실질적으로 1부터 시작하기 때문에 n이 10만일 경우 psum[100000]을 써야해서 100001로 선언하신게 맞는지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
prev_permutation(,)
안녕하세요. 위의 사진은 강의 교안 158p의 순열에 관한 설명의 일부분입니다. 마지막 줄에 '순열을 시작할 범위의 첫 번째 주소, 그리고 포함되지 않는 마지막 주소를 넣어서 만듭니다.'라고 되어있는데요. 이때 말하는 주소라는 말이 헷갈립니다. 검색해보니 단순한 순열의 시작과 끝을 말한다는데 주소라는 말을 사용한 것에서 포인터를 말하는 것인가 헷갈립니다. 인자가 위치 주소인 포인터를 말하는 것인지 아니면 단순 위치(요소)를 말하는 것인지 궁금합니다.
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
백준 10546 배부른 마라토너
python ide에서는 정답 맞는데 백준에서는 틀립니다 solution함수를 이렇게 하면 틀리는 이유는 뭔가요?from collections import Counter def solution(arr): pre_answer=Counter(arr) for key in pre_answer: if pre_answer[key]%2==1: return key n=int(input("참가자 수:")) arr=[] for i in range(n): arr.append(input()) for j in range(n-1): arr.append(input()) print(solution(arr))
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
memset 사용법
교안 공부를 하다가 질문이 있어. 이곳에 남깁니다.a로 초기화를 하기위해서 똑같이 따라쳤는데 출력값이 a가 아닌 이상한 숫자가 나옵니다. 이것은 왜그런것일까요..?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4주차는 개념강의만 들어도 괜찮을까요?
오랜시간 고민하다 강의를 보면서 힌트를 받아 4-A를 풀었습니다.허나 정말 빠르게 취준을 목표로 삼고있다면 비트마스킹은 스킵해도 될까요? 선택과 집중을 하고싶습니다,,물론 다 알아가면 좋지만 bfs나 dfs나 dp같은 문제들을 더 풀어보는게 좋을지 비트마스킹은 간단하게 알고 지나가도 괜찮은지 궁금합니다..항상 좋은 강의 감사합니다.
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
연결리스트 숙제
prev와 tail을 이용해서 만들어 봤습니다! 궁금한점이 하나 있는데 remove 메서드의 if (current)의 else 부분은 필요하지 않은것 같아서 구현하지 않았는데 문제가 있지는 않나요?class LinkedList { length = 0; head = null; tail = null; add(value) { const newNode = new Node(value); if (this.head) { this.tail.next = newNode; this.tail = newNode; } else { this.head = newNode; this.tail = newNode; } this.length++; return this.length; } search(index) { return this.#search(index)[1]?.value; } prevSearch(index) { return this.#search(index)[0]?.value; } #search(index) { let count = 0; let prev; let current = this.head; while(count < index) { prev = current; current = current?.next; count++; } return [prev, current]; } remove(index) { const [prev, current] = this.#search(index); if (current) { if (prev) { prev.next = current.next; } if (current.next) { current.next.prev = prev; } if (current === this.tail) { this.tail = prev; } } this.length--; return this.length; } } class Node { next = null; prev = null; constructor(value) { this.value = value; } } const li = new LinkedList(); li.add(1); li.add(2); li.add(3); li.add(4); li.add(5); li.add(6); console.log(li.prevSearch(2)); console.log(li.remove(4)); console.log(li.search(4)); console.log(li.tail.value); console.log(li.remove(3)); console.log(li.tail.value); console.log(li.remove(3)); console.log(li.tail.value); console.log(li.remove(2)); console.log(li.remove(1)); console.log(li.tail.value); console.log(li.remove(0));
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 무엇이 잘못되었을까요?
예제는 다 통과하는데 제출하면 틀렸다고 나오네요..bfs를 통해 풀었는데 뭐가 문제인지 잘 모르겠습니다./****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl, C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog. Code, Compile, Run and Debug online from anywhere in world. *******************************************************************************/ #include <iostream> #include <vector> #include <queue> std::vector<int> tree[50]; void bfs(const int start, const int removeNumber) { bool visited[50] = {false, }; std::queue<int> que; que.push(start); visited[start] = true; int curr = 0; int count = 0; while(que.empty() == false) { curr = que.front(); que.pop(); for (int i = 0; i < tree[curr].size(); ++i) { if (!visited[tree[curr][i]] && tree[curr][i] != removeNumber) { if (tree[tree[curr][i]].size() == 0) { count += 1; continue; } que.push(tree[curr][i]); visited[tree[curr][i]] = true; } } } std::cout << count << "\n"; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); int N, temp, removeNumber; std::cin >> N; for(int i = 0; i < N; ++i) { std::cin >> temp; if (temp == -1) { continue; } tree[temp].push_back(i); } std::cin >> removeNumber; if (removeNumber == 0) { std::cout << 0 << "\n"; return 0; } bfs(0, removeNumber); return 0; }
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
BOJ 9251
안녕하세요 강의 잘 듣고 열심히 따라가고 있습니다. ㅎㅎ Dynamic Programing 강의를 듣는 도중 궁금한점이 있어 질문 드립니다. 백준 9251문제는 Longest Common Subsequence를 구하는 문제인데 강의 내용에서 3가지 접근법인 브루트포스, 그리디, DP 순으로 설명해주시고 똑같이 따라하려고 노력하고 있습니다. 2가지 질문사항이 있습니다. 제가 생각해본 풀이가 브루트포스, 그리디, DP중 어느 풀이에 속하는지 궁금 합니다. 제가 생각해낸 풀이 Dictionary를 활용하여 LCS를 구하는 방법인데요. S1에 문자가 나온 횟수를 Dictionary로 저장하고 S2에 문자가 중복해서 나온 횟수를 빼주어 0이 되는 문자의 개수를 세는 방법입니다. 또한 이 방법으로는 백준 통과가 안되구요. 왜 안되는지 궁금합니다.코드는 아래와 같이 작성하였습니다.s1=list(input())s2=list(input())#print(s1,s2)dicts = dict()for i in s1:if i not in dicts:dicts[i]=1else:dicts[i]+=1common=[]for j in s2:if j in dicts:dicts[j]-=1if dicts[j]==0:common.append(j)print(len(common)) 감사합니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
섹션2. 브루트 포스[문제 풀이] : BOJ1182. 시간복잡도 100만 vs 1억
안녕하세요, 강의 감사합니다.섹션2. 브루트 포스[문제 풀이] : BOJ1182 에 질문이 있습니다.부분수열의 수가 100만이고 1억 보다 작아서 브루트 포스로 풀 수 있다고 하셨는데, 보통 경우의 수가 1억 미만 인지를 그러면 확인 하면 될까요??1억을 선택하신 기준이 궁금합니다. 1000만은 가능한가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-Q 시간초과
안녕하세요 선생님 강의 잘 보고 있습니다.알맞게 구현한 거 같은데 시간초과가 나는데 이게 잘못되게 구현한 건지 궁금합니다../****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl, C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog. Code, Compile, Run and Debug online from anywhere in world. *******************************************************************************/ #include <iostream> #include <queue> int map[100][100] = {0, }; int result = 0; int result2 = 0; void bfs(const int H, const int W, const int x, const int y) { std::queue<std::pair<int, int>> que; que.push({x, y}); bool visited[H][W]; std::fill(&visited[0][0], &visited[H][W], false); visited[y][x] = true; int moveX[4] = {0, 0, -1, 1}; int moveY[4] = {1, -1, 0, 0}; int newX, newY; int currX, currY; int cnt = 0; while(!que.empty()) { currX = que.front().first; currY = que.front().second; que.pop(); for(int i = 0; i < 4; ++i) { newX = currX + moveX[i]; newY = currY + moveY[i]; if (!visited[newY][newX] && newX >= 0 && newX < W && newY >= 0 && newY < H && map[currY][currX] == 0) { visited[newY][newX] = true; if (map[newY][newX] == 1) { map[newY][newX] = 0; cnt += 1; } else { que.push({newX, newY}); } } } } result += 1; result2 = cnt; } bool isMapZero(const int H, const int W) { for (int i = 0; i < H; ++i) { for (int j = 0; j < W; ++j) { if (map[i][j] != 0) { return false; } } } return true; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); int H, W; std::cin >> H >> W; for(int i = 0; i < H; ++i) { for(int j = 0; j < W; ++j) { std::cin >> map[i][j]; } } bool flag = false; while(!flag) { flag = isMapZero(H, W); if (flag) { std::cout << result << "\n"; std::cout << result2 << "\n"; break; } bfs(H, W, 0, 0); } return 0; }