묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
봉우리문제에서 이해가되지않는부분이있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 받은 행렬은 0으로 초기화 한 가장자리가없는데 왜 그러한 행렬을 만들어주는 작업이 없는거죠?? 잘 이해가 되지않습니다.. 가장자리는 무조건 작다 라고 하는거도 이해가되는데 없는 행렬을 어떻게 비교할수있는지 모르겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-G 문제 풀이 질문있습니다
http://boj.kr/c3c5f90c10764291bfde2d6fe64406a2 자꾸 런타임에러(segfault)가 뜨네요 ㅜ원인이 무엇인지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 틀린 이유를 알고싶습니다ㅠㅠ
안녕하세요 큰돌님!2-R에서 선생님께서는 child라는 변수를 만들어 기저사례를 정하셨는데 저는 a[here].size() 즉 배열의 크기가 0이면 return 1을 하도록 기저사례를 정의했습니다.그렇게 했더니 틀렸습니다가 뜨더군요ㅠㅠㅠ 배열의 크기로 확인하면 안되는 걸까요..?#include <bits/stdc++.h> using namespace std; vector<int> a[54]; int n, tmp, del, root; int dfs(int here) { int ret = 0; //이 부분입니다! if(a[here].size() == 0) return 1; for(int there : a[here]) { if(there == del) continue; ret += dfs(there); } return ret; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; for(int i = 0; i < n; i++) { cin >> tmp; if(tmp == -1) root = i; else a[tmp].push_back(i); } cin >> del; if(del == root) { cout << 0 << "\n"; return 0; } cout << dfs(root) << "\n"; return 0; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B똑같이 친거같은데 결과가 다르네요
using namespace 아래로 답지꺼 복붙 하니까 제대로 되는데 제가 답지 따라서 타이핑 친 건 이건데 안 나오네요 아무리 봐도 어디가 잘못된 줄 모르겠어요#include<iostream> #include<cstring> #include<queue> #include<tuple> using namespace std; int n, m, mx, visited[54][54]; const int dy[]={-1,0,1,0}; const int dx[]={0,1,0,-1}; char a[54][54]; void bfs(int y, int x){ memset(visited,0,sizeof(visited)); visited[y][x]=1; queue<pair<int,int>>q; q.push({y,x}); while(q.size()){ tie(y,x)=q.front();q.pop(); for(int i=0;i<4;i++){ int ny=y+dy[i]; int nx=x+dy[i]; if(ny<0||ny>=n||nx<0||nx>=m)continue; if(visited[ny][nx])continue; if(a[ny][nx]=='W')continue; visited[ny][nx]=visited[y][x]+1; q.push({ny,nx}); mx=max(mx, visited[ny][nx]); } } return; } int main(){ cin >> n >> m; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(a[i][j]=='L')bfs(i,j); } } cout << mx-1 << "\n"; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B char는 띄어쓰기 없어도 그냥 배열에 받을 수 있는건가요
int경우에만 띄어쓰기 주의하면 되나요
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
.replace()
안녕하세요~ 정규식과 replace를 사용해서 이렇게 변경해도 될까요? function solution(s) { let re = /A/g; let answer = s.replace(re, "#"); return answer; } let str = "BANANA"; console.log(solution(str));
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2 - E 왜 틀렸는지 모르겠습니다. 도와주세요.
안녕하세요!정말 잘 풀었다고 생각하고 제출했는데, 반례를 찾기가 어렵습니다. 링크 제출합니다. 감사합니다.https://www.acmicpc.net/source/58918072
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
이거 크루스칼로 풀어도 풀리는데 맞는건가요?
const p = [ [1, 2, 6], [1, 3, 3], [3, 2, 2], [2, 4, 1], [2, 5, 13], [3, 4, 5], [4, 2, 3], [4, 5, 7], ]; solution(p, 5, 8); function solution(p, city, line) { p.sort((a, b) => a[2] - b[2]); const unf = Array(city + 1).fill(0); for (let i = 0; i < city + 1; ++i) unf[i] = i; function find(v) { if (v === unf[v]) return v; else return (unf[v] = find(unf[v])); } function union(f1, f2) { const c1 = find(f1); const c2 = find(f2); if (c1 != c2) { unf[c1] = c2; return true; } return false; } let cost = 0; for (let i = 0; i < p.length; ++i) { const [c1, c2, val] = p[i]; if (union(c1, c2)) { cost += val; } } return cost; } 크루스칼로 풀어도 풀리는데 이것도 맞는 풀이인가요?테스트 케이스가 더 잇엇으면 좋겟네요
-
해결됨코딩테스트 [ ALL IN ONE ]
longest 사용 이유?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 왜 여기서 longest 변수를 사용하는건지 궁금합니다 그냥 cnt 출력하면 안되는건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-T 진짜 무식하게 풀기 테케는 통과되는데 ㅎㅎ
#include<iostream> using namespace std; int n, a[1000004], b[1000004]; int main(){ cin >> n; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<n-1;i++){ if(a[i]<a[i+1]){ b[i]=a[i+1]; }else if(a[i]>a[i+1]){ int k=i, temp=i; for(int j=i;j<n-1;j++){ if(a[j]<a[j+1])break; k++; } for(int j=temp;j<=k;j++){ b[j]=a[k+1]; } int flag=1; for(int j=i;j<n-1;j++){ if(a[i]<a[j+1]){ flag=0; break; } } if(flag)b[i]=-1; } } b[n-1]=-1; for(int i=0;i<n;i++){ cout << b[i] << " "; } }
-
미해결[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법
코틀린은 map int 밸류값에 ++ 안 되나요?
val a = mutableMapOf(1 to 2)일 때a[1]++하려고 하면 에러 나던데방법이 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2주차 개념 #4- 인접행렬 질문
안녕하세요 큰돌님.인접행렬 강의 관련하여 질문드립니다. [문제] 정점 20개인 그래프로 인접행렬 표현 시 메모리 최소로 쓸때, 배열 어떻게 만들어야 하나요? 질문1(강의 59초) 배열을 표현할때bool a[10][20]으로 할수도 있다라고 하셨는데, 이 표현이 20개의 노드중 10개의 노드로만 단방향 경로로 그래프를 만든다는 의미일까요? 질문2(강의 1분25초) arr[20][20] 필요한데 이보다 큰값을 부여할수 있다라고 언급하셨는데 a[10000][10000], 노드 20개를 이용해서 a[10000][10000] 배열을 어떻게 만들수 있는지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
삼성전자 라이브러리
안녕하십니까, 수강생입니다.큰돌님!알고리즘교안 교재에서 삼성전자 라이브러리는 iostream, stdio.h, string.h, algorithm 정도 외우면 된다고 했는데, VS를 사용하여 코디가 잘돌아가는 지 확인할 때 앞서 말씀드린 라이브러리정도만 외우면되나요?채첨시스템에 bits/stdc++.h는 사용할 수 있다고 알고 있습니다. 항상 감사드립니다.
-
해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이분 검색
찾고자 하는 M 값이 list에 없는 경우는 고려하지 않아도 되나요?
-
해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
스토쿠 검사
input_list = [list(map(int, input().split())) for _ in range(9)] # 행 체크 for i in range(9): temp = [] for j in range(9): temp.append(input_list[i][j]) if len(set(temp)) != 9: print("NO") exit() # 열 체크 for i in range(9): temp = [] for j in range(9): temp.append((input_list[j][i])) if len(set(temp)) != 9: print("NO") exit() # 블럭 단위 체크 9번 temp = [] for i in range(3): for j in range(3): temp.append((input_list[i][j])) if len(set(temp)) != 9: print("NO") exit() temp = [] for i in range(3): for j in range(3, 6): temp.append((input_list[i][j])) if len(set(temp)) != 9: print("NO") exit() temp = [] for i in range(3): for j in range(6, 9): temp.append((input_list[i][j])) if len(set(temp)) != 9: print("NO") exit() temp = [] for i in range(3, 6): for j in range(3): temp.append((input_list[i][j])) if len(set(temp)) != 9: print("NO") exit() temp = [] for i in range(3, 6): for j in range(3, 6): temp.append((input_list[i][j])) if len(set(temp)) != 9: print("NO") exit() temp = [] for i in range(3, 6): for j in range(6, 9): temp.append((input_list[i][j])) if len(set(temp)) != 9: print("NO") exit() temp = [] for i in range(6, 9): for j in range(3): temp.append((input_list[i][j])) if len(set(temp)) != 9: print("NO") exit() temp = [] for i in range(6, 9): for j in range(3, 6): temp.append((input_list[i][j])) if len(set(temp)) != 9: print("NO") exit() temp = [] for i in range(6, 9): for j in range(6, 9): temp.append((input_list[i][j])) if len(set(temp)) != 9: print("NO") exit() print("YES") 이런 식으로 이중 for문으로 모두 처리하는 것은 좋은 풀이가 아닐까요?강사님 풀이가 훨씬 깔끔하긴 한데, 4중 for문 시간복잡도와 제 풀이 중 어느게 더 빠른지 궁금합니다.
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
정렬 기준을 무게로 잡아도 풀리는데,,
밑면 넓이 기준으로 정렬하고 무게를 LIS 하는 것이랑무게를 기준으로 정렬하고 밑면 넓이를 LIS 하는 것 둘다 같은 답이 나오는데 이렇게 풀어도 되는 것이 맞나요?왜냐면 문제 조건에 무게도 같은게 없다고 나와서 그렇게 생각했습니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
궁금한점있습니다.
안녕하세요. 강사님재귀함수로 구현을 할 때 아래 코드에서 어떤 코드를 추가해야지 원소를 나열 할 수 있을까요? public class Main{ public int solution(int n){ if(n < 3){ return 1; } return solution(n - 2) + solution(n - 1); } public static void main(String[] args) { MainT = new Main(); int n = 10; System.out.println(T.solution(n)); } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 시간복잡도 O(2^26) 이면 풀려야 하는 것 아닌가요? ㅠㅠ
자바가 느려서인지, 아니면 제가 첨부터 접근을 잘못한건지 모르겠습니다. ㅠㅠpackage lecture4; import java.util.*; public class Prob1062 { static List<Set<Character>> sets = new ArrayList<>(); public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); if(k<5){ System.out.println(0); return; }else if (k==26){ System.out.println(n); return; } List<String> list = new ArrayList<>(); for (int i = 0; i < n; i++) { // 문자열 입력 받기 String str = sc.next(); list.add(str); Set<Character> set = new HashSet<>(); // 각 문자열의 문자들을 Set에 저장. for (char c : str.toCharArray()) { set.add(c); } sets.add(set); } List<Set<Character>> filtered = new ArrayList<>(); for (int i = 0; i < n; i++) { // K 보다 많은 알파벳으로 이루어진 경우 제외 if(sets.get(i).size()<=k){ filtered.add(sets.get(i)); } } List<Integer> masks = new ArrayList<>(); for (Set<Character> set : filtered) { // Set의 각 알파벳을 대응되는 비트마스크로 표현 masks.add(setToMask(set)); } int mask = 1; int max = 0; while (mask < (1<<26)-1){ // 모든 경우의 수 탐색 if(Integer.bitCount(mask)>k){ // 비트마스크의 1 개수가 k 보다 크면 다음 경우로 넘어가기 mask++; continue; } int count = 0; for (Integer m : masks) { // 문자열을 비트마스크로 표현한 것을 비교해서 읽을 수 있는건지 개수 샘 if((mask & m) == m){ count++; } } max = Math.max(max,count); // 최대값 저장 mask++; } System.out.println(max); } private static int setToMask(Set<Character> set){ int[] num = new int[26]; for (Character character : set) { num[25 - (character-'a')] = 1; } StringBuffer sb = new StringBuffer(); for (int i : num) { sb.append(i); } return Integer.parseInt(sb.toString(),2); } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
벡터안쓰고 벽을 세우는 법은 없을까요?
dfs랑 땅넓이구하기는 제 나름대로 했는데 점 세개를 배열로 고르려는데 어떻게 구현할지 막혀서 못 풀었는데 벡터 안쓰고 배열로만 점 세개를 고르는 이런 알고리즘도 있을까요? 벡터쓰는게 무조건 낫거나 없으면 답변 안해주셔도 됩니다 ㅜㅜ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 맞은거 같은데 왜 틀릴까요? ㅠㅠ
#include<iostream> #include<string> #include<stack> using namespace std; bool check(string s){ stack<char> stk; for(char c : s){ if(c=='(')stk.push(c); if(c=='[')stk.push(c); if(c==')'){ if(stk.empty()||stk.top()=='['){ return false; } stk.pop(); } if(c==']'){ if(stk.empty()||stk.top()=='('){ return false; } stk.pop(); } } if(stk.size())return false; else return true; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); while(1){ string str; getline(cin,str); if(str==".")break; if(check(str))cout<< "yes\n"; else cout<<"no\n"; } return 0; }