묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 반례 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.선생님 , 코드가 많이 지저분한 코드지만 예제 출력이랑 반례들을 여러가지 해본 결과 잘 출력 되는것 같은데 3%에서 계속 틀렸다고 뜹니다... 어디 부분이 잘못된 건지 알 수 있을까요??http://boj.kr/4530d78bb2464d989fe7a7e5adc42342
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A 질문합니다
안녕하세요, 강사님.저는 처음에 아홉 난쟁이의 키 분포를 저장할 수 있는 배열을 선언하고, 해당 키에 해당하는 난쟁이를 배열에 넣고, (전체 합 - 100)에 해당하는 난쟁이 두명을 찾는 방식으로 문제를 해결했습니다. 예제는 맞는데 틀렸다고 뜨는 이유를 모르겠습니다. 감사합니다.http://boj.kr/7e220e252b364c1e8dbf2d7c16a72cd0
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문제6번 컴파일에러 질문 드립니다!
안녕하세요!입력에 대한 출력값은 문제의 요구사항에 맞게 나오는데 계속 컴파일 에러가 뜹니다.import java.util.Scanner; public class Main { public String solution(String str){ if (str == null || str.isBlank()){ return str; } StringBuilder sb = new StringBuilder(); for (char c : str.toCharArray()) { if (sb.indexOf(String.valueOf(c)) == -1) { sb.append(c); } } System.out.println("sb :" + sb.toString()); return sb.toString(); } public static void main(String[] arg){ Main T = new Main(); Scanner kb = new Scanner(System.in); String str = kb.nextLine(); System.out.println(T.solution(str)); } } 어느 부분이 문제가 되는건지 알려주시면 정말 감사하겠습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
선생님 감사합니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 올해 초 골드 4~5도 못풀던 제가 플레를 스스로 풀었습니다.열심히 계속 진행하겠습니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
8-6 순열구하기 이러한 방식으로 풀어도 괜찮을까요?
이전 값을 DFS 매개변수로 넘겨서 이전값이 아니면 더 깊이 들어가는 방식으로 풀이를 혼자 했었습니다. 괜찮은 풀이 방법일까요?public class P6_순열 { static int n, m; static int[] arr; public static void DFS(int L, int prev, String answer) { if(L==m){ System.out.println(answer); }else{ for(int i=0; i<n; i++){ if(arr[i]!=prev) DFS(L+1, arr[i], answer+arr[i]+" "); } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); n=sc.nextInt(); m=sc.nextInt(); arr=new int[n]; for(int i=0; i<n; i++){ arr[i]=sc.nextInt(); } DFS(0,0,""); } }
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
BFS 자료구조
BFS 문제를 PriorityQueue가 아닌 LinkedList로 풀던데 이유가 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 스크립트 관련 질문드립니다
안녕하세요! 감사하게도 제공해주신 강의 스크립트로 필기를 자주하는데요, 1주차 개념 #10. 구현과 문제를 푸는 방법의 기초 강의에 스크립트가 없어서요..ㅜㅜ 제가 알기론 인프런에서 ai로 스크립트를 제공하는 걸로 알고있는데 해당 강의 스크립트는 인프런에다가 요청 드려야할까요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
6강 탑다운 DP - 상담 (#14501) 질문 있습니다!
recur(idx) 함수의 첫 번째 if 문인 if (idx == N - 1) return 0; 에서 0을 리턴하는 이유가 궁금합니다.제가 이해하기론 N - 1은 마지막 일자의 상담이고 마지막 일자의 상담에 걸린 경우 무조건 받는 것이 퇴사 전 돈을 더 많이 받기에 이득이라고 이해를 했는데요. 그렇다면 0을 리턴하는 것이 아닌 그 마지막날 상담에 받는 돈의 값을 리턴하는 게 맞는 게 아닌가 하는 생각이 들었습니다. 또한 idx > N - 1의 경우 dp 에 들어있는 돈의 값에 영향을 주면 안되므로 이 경우에는 if (idx > N - 1) return 0; 이지 않을까 하는 생각도 듭니다. 이런 의문점이 드는게 제가 문제를 잘 이해하지 못하고 접근하고 있는 것 아닌가 싶어서 질문드립니다~ 요즘 쉬운 설명의 강의 너무 잘 듣고 있습니다~ 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-D 질문입니다
http://boj.kr/b9694422323942259c6e0971b71621681987번 문제에서는 시작 지점이 왼쪽 상단으로 고정되어 있는데 만약에 시작 지점이 어디든 될 수 있다면 위의 코드 41번째 줄부터 43번째 줄까지를ffor (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { vis[i][j] = 1; alpha[board[i][j] - 'A'] = 1; solve(i, j, 1); vis[i][j] = 0; alpha[board[i][j] - 'A'] = 0; } }위의 코드로 바꾸면 알맞은 답이 나오는지 알고 싶습니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
SearchToRemove와 RemoveNode가 분리되어야 할 필요가 있을까요?
RemoveNode를 직접 먼저 구현한 후 강의를 듣게 되었는데요,저는 RemoveNode 안에 Search하는 코드를 통합해서 짰는데 SearchToRemove가 RemoveNode를 실행시키기 위해서만 필요하다면 굳이 분리를 해야 할까 하는 의문이 들었습니다.하나의 함수는 하나의 동작만 실행해야 해서 분리가 된 것일까요? 아니면 SearchToRemove가 나중에도 사용이 될 가능성이 있어서 분리된 것일까요?제가 작성한 코드를 첨부합니다. void RemoveNode(const char* pszName) { USERDATA* pTmp = g_pHeadNode; USERDATA* previousNode = NULL; bool isFound = false; // 노드 찾기 while (pTmp != NULL) { if (strcmp(pTmp->name, pszName) == 0) { isFound = true; break; } previousNode = pTmp; pTmp = pTmp->pNext; } // 노드 찾기 실패 if (isFound == false) { printf("\"%s\" : Not Found, remove failed.\n", pszName); return; } // 헤드인 경우 if (g_pHeadNode == pTmp) { g_pHeadNode = pTmp->pNext; free(pTmp); printf("\"%s\" : Found, remove successed.\n", pszName); return; } // 헤드가 아닌경우 previousNode->pNext = pTmp->pNext; free(pTmp); printf("\"%s\" : Found, remove successed\n", pszName); }
-
해결됨코딩테스트 [ ALL IN ONE ]
동적계획법 (3) 문제로 배우는 DP
탑다운 방식인데 위에 그림처럼 바텀업처럼 문제를 아래서 부터 해결해 나가서요.강의에서는 피보나치가 탑다운 방식으로 푸는 경우가 있는데 바텀업 방식처럼 문제를 아래서(위에 그림 빨간색표시처럼) 부터 해결한다고 하셨는데요. 혹시 계단 문제도 피보나치처럼 탑다운 방식인데 문제를 아래서 부터 해결해나가는 스타일인건가요?문제를 읽고 탑다운으로 풀지 바텀업으로 풀지 어떻게 알아요?
-
미해결코딩테스트 [ ALL IN ONE ]
ㅇ
탑다운 방식인데
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
소수점
만약 소수점 #자리까지 표현해야 하는 문제는그냥 printf 쓰는게 낫나요?아니면 cin함수를 유지하되 precision 같은 함수를 쓰는게 낫나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-O 관련 질문이 있습니다.
안녕하세요 큰돌님!정확히는 6-O에 국한된 질문은 아니지만6-O 2565 전기줄 문제 풀다가어떻게 풀지 감이 잘 안잡혀서 영상보고내가 직관력이 부족한건가 싶어서 여쭙습니다.이번 6주차, 이분 탐색과 LIS를 하면서이분 탐색은 제가 연습량이 부족한거 같아 solved.ac실버 난이도 무지성 박치기 하니깐 이제 감이 좀 잡혔습니다.다만, LIS 관련 문제는 "최장 증가 수열" 이란 단어가 없으면 LIS를 이용할 생각이 전혀 안나요.6-O 강의를 보면서 정말 깜짝 놀랐습니다. 어떻게 LIS를 이용해서 푸실 생각을 하신건지...실제로 문제중에 "최장 증가 수열"이란 단어가 없음에도 LIS를 이용해 풀이가 가능한 문제들이 많은가요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
투포인터 3번(#16472) 조건문 순서 질문드립니다!!
안녕하세요, 선생님. 매일매일 강의 잘 듣고 있습니다!오늘은 투포인터를 공부하다 제가 작성한 코드와 제공해주신 정답 코드의 조건문을 확인하는 순서에 차이가 있어서 질문드립니다. 해당 문제를 풀 때 while 문 안의 아래 2가지 조건을 확인하는데요, 조건 1 if arr[e] in letter:조건 2 if len(letter) < N:제가 풀어봤을 때 저는 조건1 > 조건 2를 확인하도록 구현을 했는데정답 코드는 조건2 > 조건 1를 확인하더라구요. 물론 저는 실제 정답인 4와는 달리 답이 5가 나와서 코드가 어디에선가 잘못되긴 한 것 같은데틀린 이유가 조건문에 순서와 상관없이 제가 단순히 잘못 구현한 것인지아니면 반드시 조건문을 조건2>조건1의 순서로 확인해야되는 문제인지 판단이 서지 않아 질문드립니다! 그리고 앞으로 다른 문제를 풀 때도 어떤 조건을 먼저 확인해야 되는 것인지 어떻게 판단하면 좋을지 판단 기준이 있는지도 궁금합니다 ^^#[나의 코드] N = int(input()) arr = list(input()) s = 0 e = 0 letter = [] letter.append(arr[s]) ans = 0 while s < len(arr) and e < len(arr): ans = max(ans, e-s+1) if arr[e] in letter: ####### 조건 1 e += 1 else: if len(letter) < N: ####### 조건 2 letter.append(arr[e]) e += 1 else: s += 1 e = s letter = [arr[s]] print(ans)#[정답 코드] n = int(input()) arr = list(input()) arr.pop() #inch-worm s = 0 e = 0 letters = [] letters.append(arr[s]) dist = 0 start_flag = -1 while s < len(arr) and e < len(arr): # print(s,e,letters) dist = max(dist, e-s+1) if len(letters) <= n: ########조건 2 e += 1 if e < len(arr) and arr[e] not in letters: #######조건 1 letters.append(arr[e]) if len(letters) > n : s = s+1 e = s letters = [arr[s]] print(dist)
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
05_adtFileIO 프로젝트 문의
안녕하세요. 선생님! 소스 보다가 하나 발견한 부분 공유드립니다.프로젝트이름: 05_adtFileIO소스파일: singleList.c함수명: SearchListByName Q. 해당 함수는 Key값으로 조회하여 데이터를 로드하는 함수입니다.현재는 파일에서 매번 로드하도록 되어있는데캐싱된 데이터(pDataCache)가 있다면, 파일에서 읽어올 필요가 없을것 같아 문의드립니다.추가로 테스트 해보니Search(Kim) > Edit 0 > 수정완료 > Commit X > Search(Kim) 를 하면Edit에서 수정했던 데이터가 없어지는 현상이 있습니다.이미지의 흰 네모안의 로직(주석포함)은 추가해본 부분 입니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
BFS 당근마켓 방문 겸 가중치 처리 질문입니다.
visited[nextY][nextX] = visited[nowY][nowX] + 1;로 방문 겸 가중치를 처리해주는데 가중치가 업데이트가 되지 않습니다. (모든 visited 배열이 1로 표시됨)혹시 이유가 있을까요 ㅜㅜ붙잡고 있어도 어디가 문제인지 잘 모르겠네요.http://boj.kr/fc00f1fba57c469881ce2b1aff27fc66 +) 탐색은 잘 진행됩니다.visited 배열 출력 첨부하니 참고해주시면 감사하겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p79 질문드립니다
안녕하세요 큰돌님!교안 p79에 memset() 개념에서char형의 하나의 문자(a, b, c, 등..)으로 초기화도 가능하다고 하셨는데, 어떻게 초기화하면 될까요?#include <bits/stdc++.h> using namespace std; const int max_n = 1004; int a[max_n]; int a2[max_n][max_n]; int main() { memset(a, 'a', sizeof(a)); memset(a2, 0, sizeof(a2)); for (int i = 0; i < 10; i++) cout << a[i] << ' '; cout << '\n'; return 0; } 위의 예제 코드를 실행하면1633771873 1633771873 1633771873 1633771873 1633771873 1633771873 1633771873 1633771873 1633771873 1633771873 가 나옵니다ㅠㅠ 그리고 교안 80p에 예제코드로 올려주신 아래 코드가 잘못된 것 같습니다 🙂 수정해주시면 감사하겠습니다.#include <bits/stdc++.h> using namespace std; int main() { int cnt = 0; int a[5] = { 0, }; while (++cnt != 10) { for (int i = 0; i < 5; i++) a[i] = i; a[5] = { 0, }; for (int i : a) cout << i << ' '; cnt++; } return 0; }
-
해결됨코딩테스트 [ ALL IN ONE ]
LIFO 관련 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요LIFO 1번째 문제 소스 여기에서elif not stack or stack.pop() != p:해당 부분해서 stack.pop()을 해줌과 동시에 pop한 값이 p와 같은지 아닌지 비교해보는 걸까요?실질적으로 pop이 등장하는 부분이 저 부분밖에 없어서 헷갈리네요ㅠㅠ
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
뭐가 틀린것인지 잘 모르겠습니다
n , m = map(int,input().split()) lst=[list(map(int,input().split())) for _ in range(n)] dy=[0]*(m+1) ch=[[] for _ in range(m+1)] for i in range(n): for j in range(lst[i][1],m+1): if dy[j] < dy[j-lst[i][1]]+lst[i][0] and (i not in ch[j-lst[i][1]]): ch[j]=ch[j-lst[i][1]] + [i] dy[j] =dy[j-lst[i][1]]+lst[i][0] print(max(dy))제가 짠 코드는 원래값이랑 리스트돌면서 이 시간만큼썼을때 더해지는 점수랑 비교해서큰값으로 바꿔주는것입니다.만약 리스트돌면서 이 시간만큼썼을때 더해지는 점수가 컸을때는 해당하는 문제를 푼것이 되니깐 ch에 그 index가 있는지 없는지를 비교해서 있으면은 안바꿔주고 없으면은 바꿔주는것입니다.만약에 없어서 바꿔주면은 ch에 그 index를 추가하는 방식으로 구현을했는데 왜 틀린것인지 모르겠습니다