묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 17071 문제 질문있습니다.
안녕하세요 큰돌님이 문제 제가 이해를 못하고 있는게 있는데요일단 결론부터 말하면info[2][500000] 처럼 배열을 2차원으로 만들어서 홀,짝 시간으로 분할해서 문제를 푸는것과그냥 info[500000]로 각 배열 요소에 시간을 기록해서 배열을 순회하면서, 홀짝 구분해서 답을 찾는거랑 무슨차이인지 잘 모르겠습니다.일단 아래 제풀이는 틀렸습니다.주어진 테스트 케이스는 맞는데백준게시판 반례들 몇개가 틀리게 나오는데요...(ex 입력 27297 339652 --> (답 : 425 , output : 426)대부분 1~2 차이로 틀립니다.이것 저것 다른 답안들이랑 비교하면서 디버깅해보면 info 배열을 구성하는과정에서 틀린게 있는것 같은데요.......위에 굵게+기울임 글씨체로 쓴 부분 처럼 1차원,2차열 두가지 배열이 정확히 어떤차이가 있는건지 잘 모르겠습니다.예를들어서, 제가 생각하기에는 2차원 배열을 통해서 홀수,짝수 시간을 구분할 경우에는 특정 지점 A에서 무조건 info[0][A], info[1][A] 둘중에 하나만 값을 가져야 한다고 생각하는데 제가 틀렸나요?(왜냐면 BFS를 통해서 최단경로를 찾으니까 info[0][A] info[1][A]에 두개에 값이 기록될수가 없음) // Example program #include <iostream> #include <string> #include <vector> #include <algorithm> #include <queue> #include <stack> #include <unordered_map> #include <map> #include <limits.h> using namespace std; int n,k; int info[500002]; // 수빈이 위치,시간 정보 queue<int> q; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n>>k; fill(&info[0], &info[500001], -1); if(n==k){ cout<<0<<'\n'; return 0; } //------------------------------------------------------------ // BFS로 수빈이 위치 전부 구하기 else { q.push(n); info[n]=0; while(q.size()){ int prev=q.front(); q.pop(); for(int next :{prev-1,prev+1, prev*2}){ if(next<0 || next>500000) continue; if(info[next]!=-1) continue; info[next]=info[prev]+1; q.push(next); } } //-------------------------------------------------------------- // 동생위치를 구하면서 -> 동생,수빈이 위치가 같아지는 지점을 찾음 -> // 그리고 수빈이가 소모한 시간이 동생보다 적거나 같으면 -> 시간차이가 짝수인지 확인 int pos=k; // 동생 초기 위치 int t=0; // 초기 시간 while(pos<=500000){ if(info[pos]<=t){ // 특정 동일위치에서 수빈이가 소모한 시간이 더 적을때 if((info[pos])%2 ==0 && t%2==0){ //둘의 시간이 짝수이면(=시간 차이가 짝수면) cout<<t<<'\n'; break; } else if((info[pos])%2 && t%2){ //둘의 시간이 홀수이면(=시간차이가 짝수면) cout<<t<<'\n'; break; } } t++; pos+=t; } if(pos>500000) cout<<-1<<'\n'; } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 비밀번호 발음하기 질문드립니다
안녕하세요!궁금한 점이 있어서 질문 드립니다.2-H 문제 해설에서 s[i]를 int형으로 반환해서 풀이하시던데 혹시 특별한 이유가 있을까요??저는 s[i]를 그냥 char형으로 풀었습니다.http://boj.kr/9de33b348bcb40ee958c4cfbc845c305
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 질문있습니다
https://www.acmicpc.net/source/65401116강의를 보기 전에 작성한 코드입니다. 문제에서 주어진 예제는 다 맞게 나오는데 어느 부분이 잘못되었는지 모르겠습니다ㅜㅜ
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
59번 종료조건
59번에 종료 조건이 없는데도 어떻게 값이 정상적으로 나오는건지가 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하십니까 큰돌 선생님!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/8d7c38a0a361454191ef6df051497ac7이 코드는 왜 안되는지 잘 모르겠습니다 ㅠㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
재귀함수로 구현한 조합 함수 관련 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. void combi(int a, vector <int> b) { if (b.size() == k) { print(b); return; } for (int i = a + 1; i < n; i++) { b.push_back(i); combi(i, b); b.pop_back(); } return; } 위의 함수에서 for문 다음의 return 함수를 없애도 함수의 동작에는 문제가 없고 더 빨리 동작하는데 return을 쓸 때의 이점이 있나요? 다른 코드들을 볼 때도 return;이 없어도 동일하게 동작하지만 return;이 있는 많은 예문들을 보게 되는데 return;을 코드에 추가하는 그 이유를 알고 싶습니다. 또한 return;을 넣는 순간 동작 시간이 약 0.08초에서 0.22초로 증가하게 되는데 그 이유를 알고 싶습니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
DFS BFS
그래프 요소의 문제에 접근할 때해당 문제를 DFS, BFS 방법 중어떤 방법을 사용하여 문제를 해결해야할지 항상 헷갈립니다.관련해서 문제 접근 방법론에 대해 따로 강의나 정리해주시면 감사하겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S java 로 정답 맞히신분 계실까요..?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 로직 자체는 강사님이 알려주신 흐름과 동일합니다..언어만 java로 구현한 것일 뿐인데 시간초과를 계속 밷어내요...혹시 자바로 풀어보신 분이 있으시다면.. 어떤 부분이 문제일것 같은지 힌트라도 슬쩍 부탁드립니다..ㅠimport java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { public static ArrayList<Integer>[] graph; public static boolean[] visited; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); String[] input = br.readLine().split(" "); int N = Integer.parseInt(input[0]); int M = Integer.parseInt(input[1]); int[] resArr = new int[N + 1]; visited = new boolean[N + 1]; graph = new ArrayList[N + 1]; int mx = -99; for(int i = 1; i <= N ; i++) graph[i] = new ArrayList<>(); for(int i = 0; i < M; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int from = Integer.parseInt(st.nextToken()); int to = Integer.parseInt(st.nextToken()); graph[to].add(from); } for(int i = 1; i <= N; i++) { Arrays.fill(visited, false); resArr[i] = go(i); mx = Math.max(mx, resArr[i]); } for(int i = 1; i < resArr.length; i ++) if(resArr[i] == mx) sb.append(i).append(" "); System.out.println(sb); } public static int go(int idx) { visited[idx] = true; int cnt = 1; for(int next : graph[idx]) { if(!visited[next]) { cnt += go(next); } } return cnt; } }
-
해결됨IT 기업 취업을 위한: 코딩테스트 혼자서 정복하기 (C/C++)
f20 에서 f15 + 1은 이해가 됩니다...
다만, f15 에서 f10 +1 +1 / f12 +1 +1 은 이해가 되지 않습니다. 15원을 만들기 위해서는 10원을 만든 동전 개수에서 5원짜리 동전+1 만 하는게 맞지 않나요? 마찬가지로 f12도 12원을 만들기 위해서는 12원을 만든 동전개수에 3원짜리 +1만 하면 되는줄 알았지만 왜 f10 +1+1 / f12+1+1 인지 이해가 되지않습니다...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
왜 틀렸는지 도저히 모르겠습니다
http://boj.kr/cf2c8a947f5041b69efd55961657526cmax함수 빼고 로직은 다 똑같은 거 같은데 왜 제 코드는 틀린건지 이해가 안됩니다.. 부탁드려요
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
final 선언 이유
Main 클래스 안에서MAX 변수에 대해 굳이 final로 초기화 하는 이유가 무엇일까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-T 질문드립니다.
http://boj.kr/153cb07e167d4de1a892d2dfa6fe08c1생각한 반례나 게시판에 반례 다 입력해보고 display 함수로 다 찍어봐도 문제가 없어보이는데25%에서 자꾸 터지고 있습니다.영상보고 이해는 큰돌님 풀이를 이해 했으나, 제가 초기에 작성한 코드에서 어디가 이상이 있는 지 궁금해서 질문드립니다.구조체에 name 변수는 display로 찍어보고 싶어서 선언했습니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
스토쿠 검사
이렇게 풀어도 정답 다 통과되던데 반례가 있을까요 ?import sys import string as t sys.stdin = open("input.txt", "r") a = [list(map(int, input().split())) for _ in range(9)] True_flag = True nums = [i for i in range(1, 10)] for y in range(0, 9, 3): for x in range(0, 9, 3): res = [] res.extend(a[y : y + 3][0][x : x + 3]) res.extend(a[y : y + 3][1][x : x + 3]) res.extend(a[y : y + 3][2][x : x + 3]) if len(nums) != len(set(res)): True_flag = False break if True_flag: print("YES") else: print("NO")
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-L 질문입니다.
http://boj.kr/8eb2af8984ed4372953a94ed5a6b5d48 처음부터 복잡하게 스크립트를 작성하는건 피하고싶기도 하고, 클래스 구조 설계도 연습해볼겸 Time이라는 클래스를 써서 구현했습니다.팀ID와 득점시간을 받아서 히스토리에 추가합니다.현재 동점일 때 승리 중이었던 팀의 누적 시간에 현재 득점시간 - 승리시작시간을 더합니다.현재 우위일 때 승리시작시간이 초기화 되어있을 경우 자신의 ID와 현재 시간을 기록합니다.while이 모두 끝나고(경기가 끝나고) 승리 중이었던 팀의 누적 시간에 48:00 - 승리시작시간을 더합니다. 여전히 private TC에서 막히네요..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
반복 for문 Combination으로 하였는데 안됩니다.
저는 반복문 Combination으로 풀었는데 10% 진행 중 틀렸다고 나옵니다.염치 불문하고 질문 드립니다... http://boj.kr/25a5910a7d7a426f89ab47edf1c96199
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F count 함수 질문
count 함수 내부가 이해가 안되서 질문 올립니다. if (word && (word & mask) == word)설명 해 주신 내용으로는 배운 것을 10진수 숫자로 표현 (mask) 한 값과 word 의 and 비트연산으로 나온 값이 자신이면 배운걸로 이해할 수 있는 단어가 되는 것을 알겠는데요 그럼 그냥 단순히(word & mask)==word 만 하면 되는 것 아닌가요? 그 앞에 word && 은 왜 있는걸까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A
http://boj.kr/2f3c6f01dd234db9b9b55e990409fdc3맞왜틀입니다 ㅠㅠ 큰돌님의 해설 코드 외에도 지금까지 풀어봤던 걸 기반으로 풀어보려고 했는데 잘 안되네요...질문 게시판에 있는 모든 반례를 다 적용해봐도 잘 모르겠습니다...ㅜㅜ
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
숫자의 합 구하기
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); String sNum = sc.next(); char[] cNum = sNum.toCharArray(); int sum = 0; for(int i=0; i<cNum.length; i++){ sum += cNum[i] - '0'; } System.out.println(sum); } }이 코드에서 int N = sc.nextInt(); 이렇게 한 이유가 문제 예제 이유 5, 54321 에서 5를 입력했기때문에 사용한 건가요??
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
숫자야구 문제 질문
숫자야구 문제 코드 부분에서약간 오류가 있는 것 같아서 질문드립니다.number, strike, ball에 각각 힌트를 분배할 때hint[0]~[2]가 아닌 arr[0]~[2]를 담으면서,arr[1]이 strike, arr[2]가 ball이 맞는 것 같은데영상에 나오는 코드를 다음과 같이 고치면 될까요?for arr in hint: number = arr[0] strike = arr[1] ball = arr[2]
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-D 질문입니다!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님 문제를 보고 DFS로 더 간단하게 풀 수 있을것 같아서 시도해봤는데 오답이 나왔습니다.제가 어느 부분을 놓쳤는지 봐주시면 감사하겠습니다!http://boj.kr/93bc347be5074e999271416f69842831