묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 문제 질문 드립니다!
안녕하세요, 큰돌 선생님!강의 너무 즐겁게 잘 공부하고 있습니다! :) 테스트 케이스 및 몇 가지 더 테스트 넣어봤을 때는 잘 동작하는데, 틀렸다고 나오네요 ㅠㅠ어디서 문제가 있는지 여쭤봐도 괜찮겠습니까?😭메인 로직은,1) 카운팅 배열에 담는다2) 배열을 순회하며 존재하는 문자개수의 1/2만큼 ret에 더한다(이때 홀수 개수인 문자가 2개 이상인 경우 문자열 출력 후 종료)3) 순회 종료 후 홀수 문자와 ret을 뒤집은 temp를 ret에 더한 후 출력한다입니다!!ㅠhttp://boj.kr/e839c8c8845748e0850331f8961d45eb
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
최하위 켜져있는 비트 찾기 질문드립니다!
안녕하세요 ! 최하위 켜져있는 비트 찾기 질문드립니다!20을 예시로 아래와 같이하면 3이 나와야하는거아닌가요..?#include <iostream> using namespace std; int main() { int s = 20; // 10100(20) int idx = (s & -s); cout <<idx; // 4 }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-T 이렇게 풀면 왜 틀릴까요?
http://boj.kr/f28c6d421faf48ecb8e54be17eaf1cd5테케는 통과되는데 ㅎㅎ;;r,s,t 비슷하게 푸는데 다 틀리네요 하하;;
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S 비슷하게 했는데 안되서 질문드립니다
http://boj.kr/c12fb379e72a4bac8f5560898b40d140 안녕하세요 선생님 dfs(i)를 dp[i]로 안받고 바로 내보내면 mx가 1로 고정되어서 나오는데 이렇게 하면 안되나요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
단어뒤집기 런타임에러
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요! 단어뒤집기에서, 제 코드 왜 runtime error가 나는지 보이지가 않아서 질문드립니다..ㅜimport java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); for (int i = 0; i < N; i++) { String str = in.next(); String answer = ""; for (int j = str.length() - 1; j >= 0; j--) { answer += str.charAt(j); } System.out.println(answer); } } } string이 계속 생성돼서 그런걸까요?
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
Main class에 static으로 선언하는 이유
강의 영상마다 질문이 있으면 언제든 그리고 바로 질문 남겨주세요! 질문할 때 가장 정확하게 이해할 수 있습니다.해당 영상과 관련된 질문들을 해주실 때 제가 가장 정확히 답변 드릴 수 있습니다!취업 전반의 상담이나, "제 코드가 왜 틀렸는지 알려주세요"와 같이 광범위한 질문은, 질문자의 상황에 따라 답변이 달라질 수 있기 때문에, 정확한 답변을 드리기가 어렵습니다 :(이런 분들을 위해서는 멘토링 항목으로 별도 제공하고 있으니, 다음 링크를 참고해주세요!이 링크를 통해서는 본인의 코드가 왜 틀렸는지 모를 때 질문을 주셔도 좋고, 취업 전반(면접 준비, 자소서, CS 면접 등)에 관련한 질문을 주시면 답변 드리겠습니다 :)"이 질문은 해도 되나?"라는 생각이 드신다면 우선 남겨주세요! 제가 답변 드리기 어려운 건 멘토링에 올려 달라고 재요청 드리겠습니다 :) 안녕하세요!혹시 Main class에 static으로 변수를 선언하는 이유가 궁금합니다!또한, 백준에서 public static void main 에 선언했을 때와 차이가 궁금합니다..!! 감사합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
테케는 통과하는데 왜 틀렸을까요
#include<iostream>#include<vector>using namespace std;int n,d,p,root,visited[54];vector<int>adj[54];int dfs(int here){ visited[here]=1; int ret=0; if(adj[here].size()==0)return 1; for(int there:adj[here]){ if(visited[there])continue; ret+=dfs(there); } return ret;}int main(){ cin >> n; for(int i=0;i<n;i++){ cin >> p; if(p==-1){ root=i; continue; } adj[p].push_back(i); } cin >> d; if(d==root)cout<<0<<"\n"; else{ visited[d]=1; cout << dfs(root) << "\n"; }}
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Java 알고리즘 문제 풀이 02-08 컴파일 에러 문의
안녕하세요!IntelliJ로 실행해봤을 때는 이상 없는데채점사이트로 실행 시 컴파일 에러로 잡혀서 어느 부분이 문제인지 알려주시면 정말 감사합니다! import java.util.*; class Main{ public int[] solution(int n, int[] arr) { HashMap<Integer, Integer> rankMap = new HashMap<>(); ArrayList<Integer> sortList = new ArrayList<>(){{ for(int i = 0; i < n; i++) add(arr[i]); }}; int[] answer = new int[n]; sortList.sort(Collections.reverseOrder()); for (int i = 0; i < n; i++) { if (i == 0) rankMap.put(sortList.get(i), 1); else if (sortList.get(i-1).equals(sortList.get(i))) continue; else rankMap.put(sortList.get(i), i+1); } for (int i = 0; i < n; i++){ answer[i] = rankMap.get(arr[i]); } return answer; } public static void main(String[] args) { // 실행 시간 측정 // long beforeTime = System.currentTimeMillis(); // 측정 코드 시작 Main T = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) arr[i] = sc.nextInt(); for(int i : T.solution(n, arr)) System.out.print(i + " "); sc.close(); // 측정 코드 끝 // long afterTime = System.currentTimeMillis(); // long diffTime = afterTime-beforeTime; // System.out.println("실행시간(ms) " + diffTime); } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-E 재귀함수로 풀기
http://boj.kr/4538dc44889e45e0ba2c3468c92fca3f큰돌님, 안녕하세요!다름이 아니라 재귀함수를 사용하여 문제를 풀었습니다.n의 개수 만큼 인덱스를 추가해주고(vector v에),이 벡터 v를 재귀함수에서 '값에 의한 호출'로 사용합니다. 그러면 재귀함수를 반복할 때마다 선언 및 sort할 필요없이 이 벡터 v를 인수로 넘겨줍니다. 그럼 재귀함수마다 6가지 경우의 수를 검사하게 되고, 시간복잡도를 우려하여 백트래킹을 하기 위해 'if(s + 1 < ret)'을 통해 불필요한 과정은 생략하였습니다.이렇게 하고 제출해보니, 성공이라고 떴습니다. 이 방법도 틀리지는 않은 걸까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3K 메모리초과
https://www.acmicpc.net/source/67173085 강의와 비슷하게 작성도 해보았지만 메모리 초과를 받습니다. 어느 부분을 수정해야 할지 감이 안잡혀서 질문남겨요!.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-L 문제 질문
안녕하세요 큰돌 선생님 좋은강의 감사합니다강의를 보다가 의문점이 드는부분이 있습니다.39.9 0.1 2 를 입력하면 2.000을 출력하는데, 9.9를 출력해야하는것 아닌가요?가장 첫번째 인덱스에 아무것도 곱하지 않은게 클 경우를 체크안하는 로직이 아닌지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I atoi를 쓰지말고 구현하라는 문제군요
네...(?)
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
안녕하세요 누적합 문제번호에 오타가 있는 것 같습니다
안녕하세요.누적합 강의에서 첫 문제인 '수열'은 백준 2259번이 아닌 2559번으로 등재되어 있습니다!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3시간 고민해서 풀었습니다.
매번 문제 풀때마다 너무 어렵게 문제를 접근해서 푸는거같아서 질문 남깁니다...항상 문제를 풀때 저도 알아보기 어렵게 코드를 짜는거같은데 제가 짠 코드도 다시 설명하라하면 못하겠는데 이럴땐 어떻게 하는게 좋나요??package algorithm; import java.util.ArrayList; import java.util.Scanner; public class Ascii_12 { public String solution(int n, String str) { int len = n * 7; String resultStr = ""; if(str.length() != len) { System.out.println("문자의 개수가 입력 조건과 상이합니다."); }else { str = str.replace('#', '1'); str = str.replace('*', '0'); } for(int i = 0; i < n; i++) { String newStr = str.substring(i*7, (i+1)*7); int result = 0; // System.out.println(newStr); for(int j = newStr.length()-1; j>=0; j--) { if(newStr.charAt(j) == '1') { int jAbs = Math.abs(j-6); // System.out.println(jAbs); result += (int)(Math.pow(2, jAbs)); } } // System.out.println((char)result); resultStr += (char)result; } return resultStr; } public static void main(String[] args) { Ascii_12 t = new Ascii_12(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String str = sc.next(); System.out.println(t.solution(n, str)); } }
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
안녕하세요 완전탐색 2503번 풀이 질문 드립니다
3일 째 스스로 숙제라고 말씀하신 부분에 대해서 코드 작성하면서 제출해보는데 계속 오답이 나와서 질문 드립니다. 구글에 풀이 검색하면 Permutation이나 DFS로만 풀이가 나와서 어떻게 코드를 작성해야 할까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
비가 안 오는 경우도 고려해야 되니까 ret=0아니고 1인건가요?
아무것도 잠기지 않는다는 말(a[][]가 모두 101 이상인 경우)이랑 비가 안오는거(d=0)랑은 다르잖아요무조건 비가 오는 게(1<=d<=100) 아닌가요? 비가 안 올 수 도 있는 게 상식이니까 그런가요문제 설명중 노트에 힌트라고 아무도 안 잠길 수 있다 라고 적어둔게 전혀 도움이 안 되는 문제 같네요 대놓고 비가 안 올 수 있다고 해야 하지 않나요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 compare 함수 질문
안녕하세요 큰돌님. 120p string으로 이루어진 배열을 정렬한 코드에 대해 질문드립니다.제가 이해한 바로는 compare라는 함수는 문자열의 길이를 비교하는 함수입니다.if(a.size() == b.size()) return a < b; 는 문자열의 길이가 같으면 a b 크기를 비교합니다. 이 때 비교하는 기준은 아스키 코드입니다.만약 문자열의 길이가 같지 않으면 크기를 비교해서(아스키코드 기준) 바로 boolean 값을 반환합니다.111은 222와 아스키코드적으로 비교를 하게되는데.. 이때 1의 아스키코드는 49이고 2의 아스키 코드는 50입니다. 111이 a, 222가 b 이니까 a < b 는 T가 됩니다.111은 이제 33과 비교를 하게 됩니다. if문에 해당이 되지 않기때문에 바로 return a.size() < b.size() 를 하게 됩니다. a가 111, 33이 b이고 a의 size는 3, b의 size는 2입니다. 결과적으로 F가 됩니다.여기서 드리고 싶은 질문은F가 되면 순서를 바꾸는건가요? 그렇담 왜 33,222,111 가 되지 않는건가요?111과 33은 아스키코드순으로 비교할 필요가 없지 않나요? 자릿수가 다르니까 a < b를 할 필요가 없을텐데.. 왜 교안에는 아스키코드순으로 비교한다는 내용이 실려져 있는건가요? 없어도 되는 내용인것 같은데…. 실려져 있어서 제가 잘못 알고있는건지 너무 헷갈립니다…
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
dfs를 호출 할 때 매개변수..?
안녕하세요! 강의 넘 잘 듣고 있습니다. 하루만에 거의 다들었네요,,ㅋㅋ질문이 있습니다혹시 dfs를 호출할 때 이런 '-'나 '|' 같은게 나오면매개변수로 '-' 나 '|' 를 추가해서 dfs함수에 넘겨도 되는건가요?저는 이렇게 할 때가 많은데 이렇게 하지 않고 오히려 dfs 함수 안에서 해결해주는 게 더 간단한 것 같기도 해서요.. 보통은 어떻게 하시나요? 전 4방 탐색을 하면서 이렇게 풀었었네요,, 한 방향만 탐색하는 팁 배워갑니다 ㅎㅎimport java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int[] dr = {-1, 1, 0, 0}; static int[] dc = {0, 0, -1, 1}; static int N, M; static char[][] arr; static int ans; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken()); arr = new char[N+2][M+2]; for (int i = 1; i <= N; i++) { String str = br.readLine(); for (int j = 1; j <= M; j++) { arr[i][j] = str.charAt(j-1); } } for (int i = 1; i <= N; i++) { for (int j = 1; j <= M; j++) { if (arr[i][j] == '|') { dfs(i, j, '|'); ans++; } else if (arr[i][j] == '-'){ dfs(i, j, '-'); ans++; } } } System.out.println(ans); } private static void dfs(int r, int c, char shape) { int start = 0; int end = 0; if (shape == '|') { start = 0; end = 1; } else if (shape == '-'){ start = 2; end = 3; } arr[r][c] = '1'; for (int d = start; d <= end; d++) { int nr = r + dr[d]; int nc = c + dc[d]; if(arr[nr][nc] == shape) { arr[nr][nc] = '1'; dfs(nr, nc, shape); } } } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-K lis 배열과 ans의 차이
안녕하세요 선생님.코드는 선생님의 코드를 참고 하여 질문드립니다!코드 이해를 위해 디버깅을 하는 중 테스트 케이스로610 20 9 30 8 50위 값들을 넣었을 때,출력되는 값은410 20 30 50 이지만lis 배열에 남은 값은8 20 30 50 이었습니다.제가 아직 lis 배열의 의미와*lowerPos = num; 으로 바꿔주는 부분에 대해 잘 이해하지 못한 것 같습니다.lis 배열은 그저 정답을 구하기 위한 임시적인 배열이 맞을까요?
-
해결됨코딩테스트 [ ALL IN ONE ]
two_sum 딕셔너리 문제 코드관련 질문이 있습니다.
class Solution(object): def twoSum(self, nums=[3,3], target=6): ans = [] dict = {} for i,v in enumerate(nums): if target-v in dict: ans.append(prev) ans.append(i) return ans dict[v] = i prev = i이렇게하면, for문 안에서 리스트를 append하는거니까 총 O(n) 하는거아닌가요? 왜 예시 테스트케이스는 통과를 했는데 리트코드에서 submit을 누르면 나머지 테스트케이스는 통과하지 못하는거죠 ㅜㅜ