묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨글로벌 개발자로 성장하는 < 코딩 실무 영어 /> 마스터 클래스
8:10 compile 질문입니다.
that be compiled 가 맞는거 아닌가요? 타입스크립트가 컴파일되면(수동태) plain Javascript로 결과물이 나오는...?
-
미해결기초 알고리즘 코딩테스트 40일 완성 (by 하루코딩)
DAY11 영상에 오타있네요
최댓값 문제 2566번인데 2556번(별 찍기 - 14)로 숫자가 잘못되어있습니다.수정 부탁드립니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
미로탐색 코드 질문있습니다.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; class Main { static int n = 7; static int[][] map; static int count = 0; static int[] dx = {-1, 0, 1, 0}; static int[] dy = {0, -1, 0, 1}; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); map = new int[n][n]; for (int x = 0; x < n; x++) { StringTokenizer st = new StringTokenizer(br.readLine()); for (int y = 0; y < n; y++) { map[x][y] = Integer.parseInt(st.nextToken()); } } dfs(0, 0); System.out.println(count); } public static void dfs(int x, int y) { if (x == n - 1 && y == n - 1) { count++; } else { for (int i = 0; i < 4; i++) { int d_x = dx[i] + x; int d_y = dy[i] + y; if (d_x >= 0 && d_x <= n - 1 && d_y >= 0 && d_y <= n - 1 && map[d_x][d_y] == 0) { map[d_x][d_y] = 1; dfs(d_x, d_y); map[d_x][d_y] = 0; } } } } }저와 같은 경우는 1부터 시작하지 않고 0부터 시작해서 n전까지를 구해서 진행했는데 인덱스 차이만 있는데 답은 두배씩 나오는지 모르겠습니다.정답이 8이라고 하면 16으로 나오더라구요. 인덱스를 하나씩 빼줘서 했을 뿐인데 어디가 문제인지 못찾겠네요ㅠ 아니면 놓친부분이 어디에 있는지 모르겠습니다ㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p136 질문있습니다
안녕하세요. 교안 p136 예제 코드에서#include <bits/stdc++.h> using namespace std; struct Point { int y, x; }; struct cmp { bool operator()(Point a, Point b) { return a.x < b.x; } }; priority_queue<Point, vector<Point>, cmp> pq; int main() { pq.push({1, 1}); pq.push({2, 2}); pq.push({3, 3}); pq.push({4, 4}); pq.push({5, 5}); pq.push({6, 6}); cout << pq.top().x << "\n"; return 0; }operator가 오버로딩 된 것까진 알았는데 그럼 operator()는 ()라는 연산자를 오버로딩 한 것인가요..??()라는 연산자는 무슨 의미를 가진 건가요..? ㅜㅜ 설명해주시면 감사하겠습니다.priority_queue<Point, vector<Point>, cmp> pq;그리고 이렇게 priority_queue를 선언할 때 인자가 세개 들어가는 게 각각 무슨 의미인지 설명해주실 수 있나요..? 검색을 해도 언급되는 부분을 못 찾겠어서요ㅜㅜ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 질문있습니다..
http://boj.kr/e351fd164d5943d29c80fef4e6fb27d6자식노드를 담아주는 인접 리스트를 만들고,cut함수로 잘라낸 노드와 그 자식들을 dead체크를 해주었습니다. 그리고 남은 트리에 관하여, dead 체크와 자식 체크를 해주어 리프 노드를 구해봤는데 무엇이 잘못된 것일까요 ...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 질문
http://boj.kr/a4d6ba76bf2f4964a2ffaccf343ffaa9주난이를 기준으로 퍼져나가면서 0이면 queue에 넣고 1이면 배열에 넣어두었다가 0으로 바꿔주는 방법을 사용했는데 어디서 틀린건지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p131 질문 있습니다
안녕하세요 큰돌님 😀교안 p131의 'x를 1순위로 오름차순으로 정렬하고 y가 2순위로 내림차순 z가 3순위로 오름차순 정렬이라는 문제'의 예제 코드에서struct Point { int x, y, z; Point(int y, int x, int z) : y(y), x(x), z(z) {} Point() { y = -1; x = -1; z = -1; } bool operator<(const Point &a) const { if (x == a.x) { if (y == a.y) return z < a.z; // 3순위 : z가 오름차순 return y > a.y; // 2순위 : y가 내림차순 } return x < a.x; // 1순위 : x가 오름차순 } };operator< 오버로딩 부분에서 오름차순, 내림차순이 어떻게 정해지는 것인지 정렬 로직이 궁금합니다.검색해보았더니 operator< 가 Point 내부에서 자체적으로 정렬을 시킨다고 했는데,그럼 operator< 매개변수로 들어오는 a가 어떻게 들어오게 되고 정렬을 어떻게 시키는 건지 이해가 안갑니다..ㅜㅜ예를 들어서 Point의 지역변수 x, y, z와 a의 x, y, z를 비교했을 때, x < a.x가 false이면 자리를 바꾸는 것인가요..?ㅠㅠ 로직 자체가 이해가 안 갑니다. 그리고 Point 구조체를 만드실 때 변수를 y, x 순으로 받으시는 것도, 이렇게 하면 더 편리한 이유가 있는건지 질문드리고 싶습니다!감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문 있습니다.
http://boj.kr/4ff659025d334003940b3c0246e40c58카운트를 할 때 인덱스 0에 A카운트, 1에 B카운트 .. 진행을 해서 구현했습니다.if(mid) { answer.insert(answer.begin() + answer.size() / 2, mid + 'A'); } 하지만 mid값을 중앙에 넣을 때 조건문에서 문제가 있는데 예를 들어 AAAAA를 넣으면 결과값으로 AAAA가 나옵니다.홀수 알파벳이 A일 때 조건문에 들어가지를 못해서 하나가 빠지는 것 같은데.. 인덱스 1일 때 A 카운트, 2일 때 B 카운트 하는 방식으로 해결할 수는 있지만 다른 방법은 없을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2240번 자두나무 질문있씁니다!
안녕하세요 선생님! 제가 이해하는 것이 맞나 싶어서 여쭤보고자 질문올립니다!Q1.밑에 이부분에서는 go(0,1,m-1)같은 경우와 go(0,0,m)는 완탐 시 처음 시작하자마자 움직이는 경우에 수를 나누어서 쭉쭊죾 한다음에 max값을 찾기 위해 구현한 것이 맞을까요?cout << max(go(0, 1, m - 1), go(0, 0, m)) << '\n'; Q2.밑에 이 부분에서 ret을 참조자로 받아서 반환하는 이유가 혹시 있을까요? 참조자를 사용하지 않으면 시간초과가 나더라구요.. 참조자를 통해서 직접 적으로 dp배열의 값을 참조하면 메모리를 효율적으로 쓸수 있어서 그런건가여? 근데 또 궁금하게 int &ret을 계속 생성하는건데.. 조금 햇갈립니다..ㅠint &ret = dp[idx][tree][cnt]; if(~ret) return ret; Q3.이 부분은 현재의 index에서 다음 인덱스로 갈떄 옆에 트리로 가는경우 안가는경우나눠지는 것으로 해석하였습니다. 그런데 뒤에 go함수 같은경우는 나무이동을 안할떄로 알고 있씁니다. 뒤에 (tree ==b[idx]+1) 같은 경우는 다음 go로 넘어가기 전 현재의 위치에 tree와 그 시간대 tree에 위치가 같으면 +1 (idx시간 떄 자두를 받았기 떄문) 아니면 0을 더하는 것 이 맞나요?!?return ret = max(go(idx + 1, tree^1, cnt - 1), go(idx + 1, tree, cnt)) + (tree == b[idx] - 1);Q4. 이건 문제와 외람된 말이긴 합니다. 지금 매 주차 개념설명 들으며 2~3문제 씩 주차 문제 풀면서 다음 주차 개념을 빠르게 듣고 있습니다. 과정이 너무 어려운데 이해가 안되면 문제를 외우기보다는 그 과정이 어떤식으로 대처해야하는지 위주로 공부하고 있습니다. 잘하고있는걸까여ㅠ,,
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7_A 2분 쯤 설명이 이해가 안됩니다.
코드를 아무리 봐도 DP에 넣은 값들이 여태까지 지나온 경로들의 최적해가 아니라 visited에 포함되지않은 남은 경로들의 최적해 인거같아요.... 설명에서는 앞에서부터 쌓아가는거 처럼 설명하시는데( (a b c)든 (a c b)든 최적의 값을 구해서 d로 가면 되는거아니냐는 부분) 제가 이해를 잘못 한건가요???
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4분 54초에 combi 외우라고 어디에서 말씀 하셨나요?
블로그 완탐 글 읽는데 이문제에서는 왜 visited 처리 안하셨는지 궁금합니다! 아 그리고 combi(-1,v)로 시작하셨던데 start +1 안하고 그냥 combi(0,v)로 하면 안되나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p131 3개의 멤버변수 정렬하기
해결되었습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-H 질문있습니다.
while(e<n){ if(cnt[a[e]]==0){ cnt[a[e]]++; e++; } else{ ret+=(e-s); cnt[a[s]]--; s++; } }강사님 안녕하세요?else문에서 cnt[a[s]]-- 대신 cnt[a[e]]--로 하면 틀리는 이유를 모르겠습니다. 어차피 a[s]랑 a[e]는 똑같은 값이어서 어떤 것을 줄여도 맞아야하는거 아닌가요?http://boj.kr/b07dba8700854c70b5f4031fbd5239c1
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-L 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님http://boj.kr/cd54b57de0df4ce294ae9ff069c83984next를 변수를 선언하는 것과 다음과 같이 코드를 작성하는 것에 왜 값이 다르게 출력이 되는지 여쭤보고 싶습니다. 제 코드를 돌리면 이렇게 나와요!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[5-L] 브루트포스 방법 문의드립니다...!
https://www.acmicpc.net/source/73585978 시간초과가 발생하는데, 어느 부분을 수정해서 복잡도를 줄여야할지 잘 모르겠어요..!dfs를 실행하는 반복문을 절반으로 줄이는 방식으로 해야할까요...?
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
4번 나이차이 문제
#include <iostream> using namespace std; int main() { int n,a; int max = 0; int min = 0; cin >> n; for (int i = 1; i <= n; i++) { cin >> a; if (a > max) { max = a; } if (a < min) { min = a; } } cout << max - min; return 0; }이렇게 했을 때 값이 제대로 나오지 않습니다.초기화 부분에서 max와 min에 0을 넣으면 왜 값이 다르게 나오나요..?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-A
와.. 일단 저는 다른 방법으로 풀었는데제가 푼 방식으로의 접근에 익숙해지면 더 난이도 높아지는 그리디 문제는 대처를 못하겠죠? ㅠ..큰돌님 로직이 큰 가격만 남게되는건 쉽게 이해했는데if(pq.size() > v[i].first)이 코드 하나로 큰 가격 + 하나의 날짜에 하나만 꽂기가가능해지는것에 이마를 탁 치고 갑니다... 그래도 제 코드 한번 봐주시고 피드백 한번 주시면 감사하겠습니다.저는가격으로 내림차순 sort한다.visited[10004]를 만들어놓는다.가장 큰 가격부터 자신의 Day에 visited[Day] = true로 해준다.만약 자신의 Day에 visited[Day]가 이미 true라면Day-1부터 1일까지 visited[]가 false일 날을 찾아 거기에 넣어준다.(찾았으면 break)이 로직으로 풀었습니다!https://www.acmicpc.net/source/73577847
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-B 누적합에서 보는 이득이 클까요?
http://boj.kr/e1c4b7529c7d4925bb95b0e38d7aec56처음에는 1~10억으로 이분탐색을 했었는데요시간초과가 나서 배열에 있는 값들을 더하고 확인하는 시간이 오래 걸리나 싶어서 누적합으로 해서 풀었는데 큰 차이는 없었습니다. 못풀어서 결국 강의 봤는데if (mx > mid) return false; 부분을 보고 감탄을 금치 못했는데요..누적합으로 바꿨을 때 답이 아니었던게 좀 충격이었던지라누적합을 이런 용도로 사용하는 것이 아닌가?라는의문이 들기도 하고 .. 누적합의 퍼포먼스를 최대로 낼 수 있는 문제가 막 떠오르지가 않아서 잘 이해하고 있는지 의문이 들어 글 남겨봅니다 ㅜㅜ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
투포인터 없이 풀어 봤는데 반례라거나 시간복잡도의 문제가 있을까요...?
function isSame(map1, map2) { if (map1.size !== map2.size) return false; for (const [key, val] of map2) { if (!map1.has(key) || map1.get(key) !== val) return false; } return true; } function solution(s, t) { let answer = 0; const map1 = new Map(); const map2 = new Map(); const n = t.length; const ss = s.slice(0, n); for (const s of t) { if (map1.has(s)) { map1.set(s, map1.get(s) + 1); } else { map1.set(s, 1); } } for (const s of ss) { if (map2.has(s)) { map2.set(s, map2.get(s) + 1); } else { map2.set(s, 1); } } if (isSame(map1, map2)) answer++; for (let i = n; i < s.length; i++) { map2.delete(s[i - n]); map2.set(s[i], map2.get(s[i]) ? map2.get(s[i]) - 1 : 1); if (isSame(map1, map2)) answer++; } return answer; } const s = "bacaAacba"; const t = "abc"; console.log(solution(s, t)); 슬라이딩 윈도우로 처음 t만큼 잘라서 비교한 이후 부터 돌면서 처리 했는데 다른 문제가 있을까요...?
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
section5 - 7번 질문 드립니다.
function solution(words1, words2) { const firstWordMap = new Map(); const secondWordMap = new Map(); let answer = "YES"; // 단어 구성 문자열 판별 for (let item of words1) { if (firstWordMap.has(item)) { firstWordMap.set(item, firstWordMap.get(item) + 1); } else { firstWordMap.set(item, 1); } } for (let item of words2) { if (secondWordMap.has(item)) { secondWordMap.set(item, secondWordMap.get(item) + 1); } else { secondWordMap.set(item, 1); } } // 아나그램 판단 for ([key, value] of firstWordMap) { if (secondWordMap.has(key) && secondWordMap.get(key) === value) { answer = "YES"; } else { return "NO"; } } return answer; } // test case console.log(solution("AbaAeCe", "baeeACA")); console.log(solution("abaCC", "Caaab")); 위와 같이 map을 두개 만들어 비교하는 방법은 별로일까요?