묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-K 질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의 잘 듣고 있습니다. 강의 풀이 참고하여 코드 작성하였는데.ans.push_back({it-LIS.begin(), A[i]});라인의 위치에 따라 "it-LIS.begin()"의 값이 쓰레기값일 때도 있고 그래서.., 현상의 이유가 궁금합니다. ans.push_back()을 뒤에 위치시켰을때, pos_ 값이 쓰레기값이 되는 이유 질문드려요. 그 이유로,LIS.push_back(A[i]); 가 수행되고 나면 LIS.begin()의 주소값이 변경되는 것으로 생각되는데, 맞을까요? 전체 코드>>#include <bits/stdc++.h> using namespace std; int N; vector<int> A; vector<int> LIS, Ret; int len; vector<pair<int, int>> ans; int main(){ cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false); cin >> N ; A = vector<int>(N,0); for(int i =0 ; i < N ; ++i) cin >> A[i]; for(int i = 0 ; i < N ; ++i){ auto it = lower_bound(LIS.begin(), LIS.end(), A[i]); ans.push_back({it-LIS.begin(), A[i]}); /* 현재 위치에서 push_back 하였을 떄: >> ans 배열에 담긴 값: ans = { {0, 10} {1, 20} {0, 10} {2, 30} {1, 20} {3, 50} } */ if (it == LIS.end()) LIS.push_back(A[i]); else *it = A[i]; /* 아래 위치에서 push_back 하였을 떄(주석): ans.push_back({it-LIS.begin(), A[i]}); >> ans 배열에 담긴 값: ans = { {-1405095968, 10} {-7, 20} {0, 10} {10, 30} {1, 20} {3, 50} } */ } cout << "디버깅" << endl; for(auto a : ans) cout << a.first << " " << a.second << endl; cout << endl; int len = LIS.size(); cout << len << endl; // 배열을 trace for(int i = N-1 ; i >= 0 ; --i){ if (ans[i].first == len-1){ Ret.push_back(ans[i].second); len--; } } reverse(Ret.begin(), Ret.end()); for(auto r: Ret) cout << r << " "; cout << endl; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 트리 질문있습니다
http://boj.kr/8cefb4955fb64d18ad353997d162cc29제출시 77%에서 오답처리 되는데, 어느 부분이 틀렸는지 모르겠습니다.- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6_J 질문드려요.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.강의 잘 듣고 있습니다. 다름이 아니라.ll right = 1E18로 지정하면 제출시 틀렸습니다가 뜨고, ll right = 1E15 정도로 하면 정답이 뜨는데, mid 의 값계산이 잘못되고 있는건가 체크해봐도 오버플로우가 날만한게 없어서. 이유가 궁금합니다. #include <bits/stdc++.h> using namespace std; typedef long long ll; ll N, M; vector<ll> A; ll temp; bool check(ll mid){ temp = M; for(int i =0 ; i < M ; ++i){ temp += mid/A[i]; } return temp >= N; } int main(){ cin >> N >> M; A = vector<ll>(M,0); for(int i = 0 ; i < M ; ++i) cin >> A[i]; if ( N <= M) cout << N << endl; else{ ll left = 0; ll right = 1E18; ll ret = 0; while(left <= right){ ll mid = (left+right)/(long long)2; if(check(mid)){ right = mid-1; ret = mid; } else{ left = mid+1; } } temp = M; for(int i =0 ; i < M ; ++i) temp += ((ret-1)/A[i]); for(int i =0 ; i < M ; ++i){ if (ret % A[i] == 0) temp++; if (temp ==N){ cout << i +1 << "\n"; return 0; } } } return 0; }
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
DNA 비밀번호 (백준 12891) 통과가 안됩니다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int[] myArr; // 내가 받은 문자열의 부분 문자열 조건 만족하는지 확인용 static int[] checkArr; // 주어진 부분 문자열 조건 static int checkSecret; // 모두 만족하는지 카운트 public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine()); int S = Integer.parseInt(stringTokenizer.nextToken()); // 문자열의 길이 int P = Integer.parseInt(stringTokenizer.nextToken()); // 부분 문자열의 길이 int result = 0; myArr = new int[4]; checkArr = new int[4]; checkSecret = 0; char[] A; // 주어진 문자열을 담을 배열 A = bufferedReader.readLine().toCharArray(); stringTokenizer = new StringTokenizer(bufferedReader.readLine()); for(int i = 0; i < 4; i++) { checkArr[i] = Integer.parseInt(stringTokenizer.nextToken()); if(checkArr[i] == 0) { // 주어진 조건이 0이면 이미 만족하기 때문에 checkSecret을 1증가시켜줌 checkSecret++; } } for(int i = 0; i < P; i++) { // 부분 문자열 처음 받을때 세팅 Add(A[i]); } if(checkSecret == 4) { result++; } for(int i = P; i < S; i++) { // 슬라이딩 윈도우 int j = i - P; Add(A[i]); Remove(A[j]); if(checkSecret == 4) { result++; } } System.out.println(result); bufferedReader.close(); } private static void Remove(char c) { switch (c) { case 'A': if (myArr[0] == checkArr[0]) { checkSecret--; myArr[0]--; } break; case 'C': if (myArr[1] == checkArr[1]) { checkSecret--; myArr[1]--; } break; case 'G': if (myArr[2] == checkArr[2]) { checkSecret--; myArr[2]--; } break; case 'T': if (myArr[3] == checkArr[3]) { checkSecret--; myArr[3]--; } break; } } private static void Add(char c) { switch (c) { case 'A' : myArr[0]++; if(myArr[0] == checkArr[0]) { checkSecret++; } break; case 'C' : myArr[1]++; if(myArr[1] == checkArr[1]) { checkSecret++; } break; case 'G' : myArr[2]++; if(myArr[2] == checkArr[2]) { checkSecret++; } break; case 'T' : myArr[3]++; if(myArr[3] == checkArr[3]) { checkSecret++; } break; } } }로컬에선 문제없이 동작하는데 백준에서는 계속 통과가 안되네요.. 혹시 동일하신분들 계실까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-a 왜 틀렸는지 궁금합니다
http://boj.kr/5b42789344b749769d5371b7e76dfb10 안녕하세요 큰돌님 !강의 너무 재밌게 잘 듣고 있습니다.문제해설대로 map을 사용하는게 좋은 방법이란걸 깨달았지만 해설을 듣기전 혼자 풀었을때 작성한 코드인데요.저는 전역으로 벡터를 만들어서 더 좋은 조건(사전 순으로 빠른)의 벡터가 만들어졌을 시 비교하여 전역 벡터로 할당해주는 방식으로 짜보았는데요.해당문제를 검색해보며 여러 테스트케이스를 해봐도 맞았는데 제출은 틀렸다고 나옵니다 .. ㅠㅜㅠㅜ어떤 반례가있는지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 시간복잡도 관련 질문있습니다.
안녕하세요 큰돌님문제 해설에서 시간복잡도 계산하실때 300C3 이라고 하신 부분에 대해서 질문드립니다.go 함수 호출시마다 check 함수또한 호출하게 될텐데10*30 배열의 경우 check 한번당 300번의 탐색을 해야하므로 300C3 * 300이 되어야하는것이 아닌가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
a.cpp 오류
이런 상태로 터미널에서 g++ -std=c++14 -Wall a.cpp -o test.out 를 하여도 에러가 나며 #include <bits/stdc++.h> 부분에도 에러가 납니다. 도움 부탁드리겠습니다!
-
해결됨SQL 코딩테스트를 위한 첫 걸음
LEETCODE - Sales Analysis 3 코드 질문드립니다.
안녕하세요, 젬마님 강의 잘 듣고 있는 수강생입니다. 혹시 수업에서 다루지 않은 leetcode 문제도 질문 받아주실지 잘 모르겠지만 한 번 올려 봅니다...!Sales Analysis 3 문제의 답을 아래와 같이 적었는데 계속 오류가 납니다. 답변 주시면 감사하겠습니다. SELECT P.PRODUCT_ID, P.PRODUCT_NAME FROM PRODUCT P INNER JOIN ( SELECT * FROM SALES WHERE PRODUCT_ID NOT IN ( SELECT PRODUCT_ID FROM SALES WHERE SALE_DATE < '2019-01-01' OR SALE_DATE > '2019-03-31' ) ) N ON P.PRODUCT_ID = N.PRODUCT_ID;
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
촌수 계산
count라는 매개변수를 같이 전달해주기 보다 dfs가 호출될 때마다 answer를 넣어주는 방식으로 풀어봤는데 왜인지 end 값을 찾았을 때 return이 적용이 안되는 거 같습니다. 혹시 어떤 문제가 있는지 봐주실 수 있나요? import java.util.*; import java.io.*; class Main { static int N, start, end, M; static boolean[] visited; static ArrayList<Integer>[] graph; static int answer = -1; private static void dfs(int i) { if (i == end) { System.out.println("end: " + end); return; } visited[i] = true; for (int j = 0; j < graph[i].size(); j++) { int next = graph[i].get(j); if (visited[next] == false) { System.out.println("next: " + next); dfs(next); answer++; } } } public static void main(String[] args) throws IOException{ // 입력 및 초기화 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); N = Integer.parseInt(br.readLine()); // 노드의 개수 StringTokenizer st = new StringTokenizer(br.readLine()); start = Integer.parseInt(st.nextToken()); // 시작 노드 end = Integer.parseInt(st.nextToken()); // 끝 노드 System.out.println(end); M = Integer.parseInt(br.readLine()); // 간선의 개수 visited = new boolean[N+1]; // graph 선언 후 초기화 graph = new ArrayList[N+1]; for (int i = 1; i <= N; i++) { graph[i] = new ArrayList<>(); } for (int i = 1; i <= M; i++) { st = new StringTokenizer(br.readLine()); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); graph[x].add(y); graph[y].add(x); } System.out.println(Arrays.toString(graph)); // dfs 호출 dfs(start); System.out.println(answer); bw.close(); br.close(); } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
두 코드의 차이가 무엇인지 궁금합니다
https://www.acmicpc.net/source/share/52db515483bf48409679906723d0d91f위 코드는 오답이고https://www.acmicpc.net/source/share/4d3ef9f8e6c74ed2af729ac607ef92dd위 코드는 정답인데두 코드의 로직에 어떤 차이가 있는지 궁금합니다- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
m1 brew 설치
터미널에서 brew install gcc를 해보았는데 명령어가 찾아지지 않아서 문의 드립니다.맥북 에어 m1 입니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G out of range 에러입니다
http://boj.kr/7de1d484d2e34806838cfb3788cd5e81아무리 생각해도 어디서 out of range에러가 나는지 모르겠습니다! 예제는 다 맞는데 23퍼에서 에러가 납니다!
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
구현 연습에 대한 개인적 의문
제가 나름 강사님의 큰 틀의 사고를 이용해서 구현을 하는데 차이가 약간씩 나고 있습니다. 이걸 코드 수준에서 동일하게 하도록 연습을 해야 할 지 아니면 저의 사고를 우선으로 하고 차이를 조정을 해야할지 고민이 있어 질문 드림니다!
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
완전탐색 1090 문제 질문드립니다.
for y in arr_y: for x in arr_x: 제공해주신 코드에서 y,x 각 축을 꼭 다돌아야 하는건가요?강사님이 설명해주신부분에서 여러명이 한곳에서 모일때 비용을 최소화하기위해서는 여러명중 한명의 집에서 모이면된다. 라는 부분을 참고하면 입력된 4개의 좌표(집)값에 대해 각 좌표 값에대해 나머지 좌표값들의 거리를 계산하면 되는거아닌가요..??for ex, ey in arr: # [15, 14], [15, 16], [14, 15], [16, 15] for x, y in arr: # [15, 14], [15, 16], [14, 15], [16, 15]이런식으로요조언 부탁드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
visited를 map방식으로 풀어봤습니다. 테스트 케이스는 맞는데, 어떤 반례가 있을까요?
선생님, 안녕하세요.visited를 맵에 넣어서 (y와 x좌표를 스트링으로 바꾼 후 키로 삼고, value는 1이나 true를 줬습니다.) 하는 방식으로 풀어봤습니다. 또, 배추의 좌표들을 받을 때, 이를 벡터에 넣어줘서 벡터를 반복문을 돌며 dfs를 실행하며 visited맵을 체크해줬어요.배열로 받던 visited를 맵으로 바꾸고, 벡터에 배추 좌표를 넣어주는 정도라서 식이 많이 다른것 가지는 않구요,이렇게 하면 2중배열을 돌지 않아도 되서 약간이나마 더 효율적이라는 생각도 드는데요.테스트 케이스는 맞는데, 제출하면 틀렸다고 나옵니다. 어떤 반례가 있을까요?http://boj.kr/5fdb9a3986444cf7b5f0723ce0db6048
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
replaceAll, subString
안녕하세요 강사님, 강의 잘 듣고 있습니다. 지난 시간에 배운 replaceAll, subString로 풀어봤고 코드를 입력하면 정답이 잘 나오는데, 채점 사이트에서는 오답이라고 떠서요. 왜 그런지 설명해주실 수 있으실까요? 감사합니다~ import java.util.Arrays; import java.util.Scanner; class Main { public String solution(String str){ String answer= ""; str= str.replaceAll("[^\\d]+",""); for(int i=0; i<str.length(); i++){ if(str.charAt(i) == '0'){ answer = str.substring(i+1); } else return answer; } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner sc= new Scanner(System.in); String str= sc.nextLine(); System.out.println(T.solution(str)); } }
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
for문 변수 초기화 방법
선생님께서는 강의에서j=0으로 밖에서 초기화하셨는데 이 부분에 대해서 이유를 말씀해주시지 않아서 궁금합니다. 평소대로 for(j=0; j<n; j++)로 작성하면 답이 다르게 나오던데 그 이유를 모르겠습니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
공통원소구하기 시간초과관련
import java.util.*; public class Main { public List<Integer> solution(int n, int m, int[] x, int[] y) { List<Integer> answer = new ArrayList<>(); Map<Integer, Boolean> map = new HashMap<>(); for (int i = 0; i < n; i++) { map.put(x[i], true); } for (int i = 0; i < m; i++) { if (map.containsKey(y[i])) { answer.add(y[i]); } } //오름차순 정렬 Collections.sort(answer); return answer; } public static void main(String[] args) { Main t = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] x = new int[n]; for(int i = 0; i < n; i++){ x[i] = sc.nextInt(); } int m = sc.nextInt(); int[] y = new int[m]; for(int i = 0; i < m; i++){ y[i] = sc.nextInt(); } for(Integer i : t.solution(n,m,x,y)){ System.out.print(i+" "); } } }시간복잡도 신경 쓰다가 HashMap을 사용 해봤는데 그래도 아슬하게 세이프 인 것 같습니다... 혹시 제일 좋은 방법은 없을까요?
-
해결됨코딩테스트 [ ALL IN ONE ]
노션공유 부탁드립니다.ㅏ
안녕하세요. 노션 공유 부탁드립니다. 노션 가입계정과 인프런가입계정이달라서 어디로 노션공유가 갔는지 모르겠습니다. paylin@naver.com 계정으로 노션 공유메일 발송해주실 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-A 질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.큰돌님 안녕하세요! 이번 강의도 잘 듣고 내심 궁금한게 있어서 질문 드렸습니다.http://boj.kr/f9048d0d72c1430292e3469290235959for문으로 모든 시작점을 진행해도 같은 값이 나올 줄 알았는데 그게 아니었습니다. 문제 풀 때는 상관이 없지만 내심 너무 궁금해서 질문드립니다..!