묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 중급 2편
Arrays.sort
[질문 내용]MyUser에서 compareTo를 Override한 뒤Arrays.sort(array);System.out.println(Arrays.toString(array));을 했을때 나이 순으로 정렬이 되는데이게 어떻게 이렇게 되는건지 잘 이해가 되질 않습니다.sort가 내부에서 compareTo를 호출하고array가 MyUser타입이기 때문에 MyUser에서 Override한 compareTo를 호출하는건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3주차 수업 질문있습니다.
안녕하세요 큰돌님:)제가 지금까지 진행하면서 find와 .find의 사용이 헷갈립니다!! 혹시 어디에는 뭘 사용하는지 정리해주실 수 있을까요?일단 제가 알고 있는 것은 find()는 이터레이터를 반환하고 실패시 해당 컨테이너의 .end()를 반환합니다..find()는 오늘 수업과 "666"문제로 실패 시 string::npos를 반환하는 걸 알았습니다.find는 보통 순차 컨테이너에 사용하는 거 같고 (map, vector, list 등) .find 문자열 그리고 map에서 사용하는 거 같습니다.하지만 이것이 뭔가 정리가 안되어 있는 느낌이라 큰돌님께서 혹시 딱 정리해주실 수 있나요??!!!사실 map일때 key는 .find를 쓰고 쌍을 찾을 때는 find를 쓰고 너무 헷갈립니다. ㅠㅠ
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
원더랜드(프림)
제가 다익스트라 알고리즘이랑 헷갈려서 질문드립니다.프림에서는 아무 정점(ex.1번노드)를 시작 정점으로 잡고 pQ.poll하면 선생님 로직은 poll된 노드는 무조건 최소값이다라고 확정짓고 ch배열에 1로 하시는 거에서 혼동이 옵니다.아직 다른 정점들을 다 방문하지 않았는데 왜 최소값으로 단정짓는지 모르겠습니다.만약 시작 정점을 1로 하고 1에 연결된 다음 노드들이 1이 아닌 다른 노드들에서 오는 값이 최소일 거라는 가능성은 왜 배제된거죠?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-C 질문
안녕하세요 강사님 6-C 질문드립니다.https://www.acmicpc.net/source/99232136문제에는 정확히 M번만 통장에서 돈을 뺀다고 하여 위 코드처럼 분기를 cnt > m | cnt < m | cnt == m으로 나눠서 했을 경우 오답으로 나왔습니다. 그래서 혹시나 cnt > m | 나머지로 나누니 통과했는데, 문제에서는 '정확히 M번' 이라고 명시되어 있던 것 같은데, 이러면 M번보다 작아도 정답으로 처리해버리는 것이 아닌지 질문드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 질문있습니다.
안녕하세요 큰돌님:)이번 문제의 로직은 좀 다르게 생각해서 푼거 같습니다. 물론 큰돌님의 예제 코드가 더 효율적이라 해당 코드로 다시 연습해보겠습니다!!http://boj.kr/c74792f1a0264fdf9df877f3210cc613저의 경우는 문제에서 입력에서 0번 노드부터 주어진다고 하여 따로 root노드를 저장하지 않고 무조건 0번부터 루트 노드라고 생각하고 풀었습니다.그리고 저는 노드를 탐색해서 지워지는 노드라면 해당 노드와 그 아래 노드들(자식 노드)을 모두 벡터에 넣어 find로 문제를 풀었습니다. 저의 코드는 어떤가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S 질문있습니다.
안녕하세요 큰돌님:)전반적인 로직은 큰돌님과 같은거 같습니다. http://boj.kr/42404731b4db4e979af5791ec8a400a8 큰돌님의 경우 mx에 최대값을 넣고 dp 행렬에 mx와 같은 값을 꺼내더라고요. 저의 코드는 순수 비교하면서 이전에 큰돌님이 말씀해 주신 prev를 사용해서 구축했습니다. 저의 코드는 어떤가요?그래도 수업에서 알려주시는 걸 사용하려고 하는데...ㅎㅎ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-Q 질문있습니다.
안녕하세요 큰돌님:)2-Q 문제를 풀었는데 저의 코드가 효율적인지 궁금해서 질문 남깁니다.http://boj.kr/ef8c0d7a6f54429f964d6471f4d387c5저의 코드와 큰돌님의 코드의 로직은 비슷한거 같습니다. 다만 큰돌님의 코드는 녹아야 하는 치즈의 영역을 DFS 즉 go함수에서 벡터에 저장하고, 저는 따로 녹이는 함수를 만들어서 진행했습니다. 저의 코드는 함수에서 DFS이후에 한번 더 2 중 for문으로 탐색을 하는 로직이기 때문에 시간 복잡도가 오르는 단점이 있는 거 같습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
제가 문제를 이해한 것인지 확인 부탁드립니다.
안녕하세요 제가 문제를 이해한 바가 맞는 것인지 확인 부탁드립니다.해당 문제는 단순히 "1" + "666" 처럼 숫자 뒤에 666을 붙이는 것이 아니라, 1씩 증가하면서 그다음 666이 포함되는 숫자를 찾는 것.1편의 경우 666, 2편의 경우 그다음 666이 들어간 숫자의 가장 최솟값이 1666임, 3(2666), 4(3666), 5(4666), 6(5666)편도 마찬가지. 그 뒤로 7편부터는 6660이 "666" 이 들어간 최솟값이므로 6660, 6661 ... 식으로 올라감. 이렇게 이해하면 되는걸까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이런 코드는 어떤가요?
import java.util.*; public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); solution(in.nextInt(), 1, 1, 0); in.close(); } public static void solution(int target, int start, int value, int prevValue) { if (target >= start) { System.out.print(value + " "); solution(target, start + 1, value + prevValue, value); } } }다음과 같이 풀어보았는데요, 재귀와 메모이제이션을 비슷하게 구현한것 같아서요. 이렇게 작성하면 어떨지 문의드려요!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-F 1202 Priority Queue 관련 질문 드립니다.
안녕하세요 선생님!선생님의 해설은 너무 잘 이해가 갔는데, 고민이 생겨서 질문드려요. Priority Queue의 경우 C++에서는 STL로 제공해주지만, Javascript에서는 제공해주지 않는 걸로 알고 있어서 사용이 머뭇거려지더라고요. (언어 포팅이 힘들 것 같아서요) 만약 자바스크립트 언어로만 풀어야하는 알고리즘 문제가 나온다면 해당 문제는 어떻게 풀어할지 고민하면서, Priority Queue를 최대한 사용하지 않는 방식을 고민하게 돼요. 이런 방향성이 올바른 걸까요? Priority Queue를 사용하지 않으려니 알고리즘을 더 많이 고민하게 되고, 이번 문제의 경우에는 해답이 보이지 않아요. priority queue를 직접 JS에서 클래스로 구현하여 코딩테스트에서 사용하기에는 너무 과한 것 같고, 사용을 안하자니 이런 문제에서 시간초과가 나니까 고민이네요... 어떻게 하는게 좋을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
bfs 풀이
제 자력으로는 bfs로 풀어봤는데 정답이 뜨긴 했습니다.그리고 선생님이 푸신 기법으로도 제출해보았더니 실행시간은 비슷하더라구요.이 문제에서만은 bfs로 해결해도 되지만 뒤에 있는 문제를 풀기 전에 알아야할 코드이기에 선수학습 코드로 알고 있으면 될까요? 최소 스패닝 트리 문제는 bfs만으로는 풀 수가 없는걸까요...?한 집합에서 노드들이 응축이 되지 않고 계속 연결만 되고 있는 상태에서 마지막으로 입력된(연결된) fb가 이 집합의 배열의 값이 되는건가요? 입력 예시로 보면 (1,2), (2,3), (3,4), (1,5)는 결국 하나의 집합인거잖아요? 여기서 5(fb)가 이 집합의 배열값으로 무조건 고정이 되는건지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 학습 방법
교안 학습은 그냥 독학하면 되는건가요?아래 3개 교안이 제공되는 거 같은데, 어떻게 활용하는 건가요? 교안을 다 보고 강의를 들어야 하나요? 강의는 문제 위주로 되어 있는거 같은데, 강의를 어떻게 활용하라는 설명이 없어서 질문 드립니다. 강의는 문제풀이 위주인거 같은데, 교안을 직접적으로 설명하는 부분은 없다면 아래 3개의 교안을 어떤 식으로 활용해야 하는지 궁금합니다!! C++ 알고리즘 교안10주 완성 문제해설 교안알고리즘 개념교안
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
학습질문
안녕하세요 큰돌님이번에 새롭게 수강을 하게 된 수강생입니다. 다름이 아니라,해당 기업에서 필요로 하는 개념만 배우려고 계획하고 있는데, 챕터 순서 없이 필요한 부분만 수강하고 개발을 해도 되는 구조일까요? 아니면 1~10주까지 순서대로 끝까지 수강하고 진행하는 것이 필수일까요? 저는 아래와 같이 계획하고 수업을 진행하려 했습니다. 아래의 것만 공부하면 될 것 같아서요.섹션 2: 구현, 시간복잡도, 시뮬레이션섹션 3: DFS/BFS (그래프 탐색)섹션 4: 완전탐색과 백트래킹섹션 8: DP (Dynamic Programming)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
당근마켓 문제 질문있습니다.
안녕하세요 큰돌님:) 항상 질문에 대한 답변 감사드립니다. 당근마켓 배열의 크기가 [5][5]로 좌표는 (0,0) ~ (4,4) 까지 있습니다. 큰돌님의 코드는 (0,0)부터 당근을 소모해서 가중치가 +1이 되어 있습니다. 문제는 "한칸" 움직일 때 "당근한개"가 소모된다는 것으로 설명하고 있습니다. 승원이는 (0,0)에서 출발을 시작하고 (1,0)으로 가야 당근 한개가 소모되는 것이니 (4,4)에 도착했을 때 당근의 소모개수에서 -1을 해줘야 하는거 아닌가요?(0,0)좌표에서 당근의 소모개수가 +1이 된다면 승원이는 (0,0)좌표에서 출발해서 (1,1) 좌표로 온것이고 배열은 (1,1)~(5,5)로 봐야 하는거 아닌가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-F 코드 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/599ae84bf8024ff7a8d2ae8a8cdd3a2e선생님, 안녕하세요! 선생님의 답안코드와 제 코드의 차이점은 단지 s냐, str이냐 이 문제 인 것 같은데어디 부분이 문제인지 잘 모르겠습니다.감사합니다. 오류 내용입니다.Main.cc: In function ‘int main()’: Main.cc:8:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 8 | for (int i = 0; i < str.size(); i++) { |
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-O 맞왜틀팁 질문
안녕하세요, 4-O 15926번 문제 질문드립니다.저는 다른 아이디어 없이, 스택으로 경우의 수를 처리하려고 했습니다만 어떤 테스트케이스에서 틀렸다고 나오는지 모르겠어서 질문드립니다!http://boj.kr/85e34b6b58404d3fa9c80c8c7b62a176 위의 코드의 경우 다음의 아이디어를 핵심으로 구현되어있습니다.짝이 맞는 경우 "()" 에는 len에 2를 더한다. 동시에, pop해서 없앤다.짝이 맞지 않는 경우에는 maxLen을 현재까지 쌓인 len으로 갱신을 시도하고, len을 초기화한다. (스택을 비워두지 않기 위해 이때는 ')' 라도 스택에 push 한다.만약 stack이 비게되면, 이땐 acc에 그 길이를 누적해둔다. (전부 이어져있으므로) 전부 다 살펴본 뒤에, acc와 len중 최대값으로 한번더 maxLen을 갱신하며 마무리한다.위의 아이디어는 도중에 올바른 괄호문자열이 아닌 경우도 전부 계산할 수 있고, 차마 계산하지 못하고 마무리되는 경우도 4번에 의해 계산되니 문제 없다고 판단했습니다. 위의 로직에는 어떤 문제가 존재하는걸까요?어떤 테스트케이스에서 걸리는걸까요? 감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
수업 질문있습니다.
안녕하세요 큰돌님:) Q. 종화는 방구쟁이야! 문제에서 아래와 같이 코드를 작성했습니다.아래와 같이 작성한 이유는 컴포넌트들을 번호를 붙여가며 색칠하는 알고리즘이 풀르드필이라고 해서 다음과 같이 cnt를 방문할 수 있는 지역이면 +1 을 입력해 들어가게 했습니다. 들어가는 지역마다 다른 번호가 vis에 들어가도록 하기 위해서요! 아래와 같이 작성해도 괜찮은 방법인가요? http://boj.kr/d2d3da500927468b842dd03608929196#include <bits/stdc++.h> using namespace std; int N, M, cnt; int adj[103][103]; int vis[103][103]; int dy[] = {-1, 0 , 1, 0}; int dx[] = {0, 1, 0, -1}; void DFS(int y, int x, int cnt){ vis[y][x] = cnt; for(int i=0; i<4; i++){ int ny = y + dy[i]; int nx = x + dx[i]; if(ny<0 || ny>=N || nx<0 || nx>=M) continue; if(adj[ny][nx] == 0) continue; if(vis[ny][nx] == 0) { DFS(ny, nx, cnt); } } return; } int main(){ cin >> N >> M; for(int i=0; i<N; i++){ for(int j=0; j<M; j++){ cin >> adj[i][j]; } } for(int i=0; i<N; i++){ for(int j=0; j<M; j++){ if(vis[i][j] == 0 && adj[i][j] == 1) { cnt++; DFS(i, j, cnt); } } } cout << cnt; return 0; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
수업 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. using namespace std; const int V = 10; vector<int> adj[V]; int visited[V]; void go(int idx){ cout << idx << '\n'; visited[idx] = 1; for(int there : adj[idx]){ if(visited[there]) continue; go(there); } return; }visited가 1로 되면서 해당 노드로 다시 가지 않는 로직을 구현한 것은 이해 했습니다. 0번 노드부터 순차적으로 n번 노드까지 가면서 노드에서 연결된 노드로 가는 로직으로 이해했습니다. 결국 for문이라는 것은 from 노드부터 to 노드까지를 반복하는 것인데, 예를 들어 1번 노드와 3번 노드가 무방향 그래프라면 1번 노드로 갔다가 다시 3번 노드로 오는 것을 막는데 visited=1을 사용하는 것으로 이해했습니다.1번 노드의 for일 때, 1번 노드가 3번 4번과 연결되어 있다면, 1->3, 1->4의 로직이 실행될 겁니다. 제가 이해가 안 가는 것은 이 1번 노드에서 3번 노드로 가고 1번 노드에서 4번 노드로 가는 것이 1번 노드로 다시 가지 않은 것 인가에 의문이 듭니다.사람으로 비유를 하자면 결국 1번에서 3번을 갔다면 3번에서 4번의 길이 없으면 4번으로 못가는 거 처럼요. 그럴 경우 3번에서 1번으로 돌아가고 4번으로 가야 하는 것 아닌가요? 근데 정말 이것이 1번 노드로 다시 돌아가지 않은 것인가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문 있습니다.
안녕하세요.큰돌님의 강의를 수강하면서 코딩테스트를 준비하고 있는 학생입니다.강의와 교안에 나와있는 알고리즘만으로 대기업 코딩테스트 대비가 가능한지 궁금합니다. 요즘 과제전형으로 대체를 하는 추세이나 아직도 코딩테스트를 많이 보는 기업들이 많기에, 얼마나 효율적으로 공부하여 준비해야할지 모르겠습니다.좋은 강의 올려주셔서 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
dev-c++에서 c++17이상 설정
안녕하세요! 위와 같이 dev-c++이 설정되어 있어서 그런지auto &[v, weight] 이러한 코드를 쓸 때 항상 오류가 납니다. 저 코드는 c++17이상이어야 한다는 말을 들어서 이렇게 -std=c++17로 설정을 바꾸어 보았으나위와 같이 dev-c++이 c++17을 인식하지 못하는 모습을 보이고 있습니다.또한 dev-c++ 쓰면 한글이 utf-8이 아니라 euc-kr로 저장이 되는 것 같습니다. 그래서 github에 올렸을 때 가끔 한글이 깨지는 모습을 보이기도 합니다. 요약해보면,dev-c++에서 c++17이상을 인식 못해서 auto &[v, weight] 이러한 코드를 쓰지 못합니다. c++17이상으로 바꾸는 방법을 알고 싶습니다.dev-c++에서 한글을 euc-kr로 저장하는 것 같습니다. utf-8로 저장하는 방법이 궁금합니다. 답변 부탁드립니다. 감사합니다.