묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
침투 (백준 13565) 문제중 질문입니당
아래 코드에서 왜DFS를 수행할때 MAP[1] 이 왜 고정인지 잘모르겠습니다... //맵정보 저장 for (int i = 1; i <= N; i++) { String str = br.readLine(); for (int j = 1; j <= M; j++) { map[i][j] = (str.charAt(j - 1) == '0' ? true : false); } } //dfs for (int j = 1; j <= M; j++) { if (map[1][j]) { // 왜 map[1][j] 일까요 dfs(1, j); // 또한 dfs도왜 1,j 일가요 } }
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
최적화(정수론) 질문
21분 22초에서 176에서 177까지의 수에서 2의 제곱수로 나누어지는 약수를 모두 찾아 더하는 문제인데요.뜬금없게 느껴졌는데,176은 16으로 나누어 떨어지고, 177은 1로 나누어 떨어지니 16+1 =17이 답이다라고 하셨는데... 저는 이 전개가 전혀 이해가 되지 않습니다...어떻게 16 + 1이 나오는지 알려주시면 감사하겠습니다....
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
4. 모든 아나그램 찾기 질문
안녕하세요 다음 제 풀이가 테스트케이스 1,2번에서만 오류가 나는데 코드의 어느 부분이 잘못되었는지 모르겠어서 질문 드리고 싶습니다.import java.util.HashMap; import java.util.Scanner; public class Main { public static int solution(String S,String T){ int answer = 0; HashMap<Character,Integer> ThashMap = new HashMap<>(); for (char x: T.toCharArray()){ ThashMap.put(x, ThashMap.getOrDefault(x, 0)+1); } HashMap<Character,Integer> ShashMap = new HashMap<>(); // 1번째 윈도우 for (int i=0; i<T.length(); i++){ ShashMap.put(S.charAt(i), ShashMap.getOrDefault(S.charAt(i), 0)+1); } if (ThashMap.equals(ShashMap)) answer ++; // 나머지 윈도우 for (int i=T.length(); i<S.length()-1; i++){ ShashMap.put(S.charAt(i), ShashMap.getOrDefault(S.charAt(i), 0)+1); ShashMap.put(S.charAt(i-T.length()), ShashMap.get(S.charAt(i-T.length()))-1); if (ShashMap.get(S.charAt(i-T.length())) == 0) ShashMap.remove(S.charAt(i-T.length())); if (ThashMap.equals(ShashMap)) answer ++; } return answer; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1 = sc.nextLine(); String str2 = sc.nextLine(); System.out.println(solution(str1,str2)); } }
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 교재가 있어야 수강 가능한가요?
안녕하세요!강의를 수강하려고 결제했는데 노션 교재를 바로 받아 볼 수 있는게 아니더라구요 ㅠㅠ구글폼 제출했는데..노션 교재가 있어야 원활한 수강이 가능한 것인지요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-N 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님,http://boj.kr/a982837cbe674880af718ecd4566f9f5이렇게 풀었는데, 예제는 다 맞게 나오는데 혹시 제가 놓친 테스트케이스가 있을까요?아니면 다른 부분이 틀렸을까요? 감사합니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 공유 부탁드리겠습니다
인프런 아이디: sonaky47노션 이메일주소: sonaky47@gmail.com
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
12891_DNA비밀번호
package baekjoon; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer; public class p12891_DNA비밀번호 {static int[] myArr;static int[] checkArr;static int checkSecret; public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = new StringTokenizer(br.readLine());int s = Integer.parseInt(st.nextToken());int p = Integer.parseInt(st.nextToken()); int result = 0;checkArr = new int[4]; // 비밀번호 체크 배열myArr = new int[4]; // 현재 상태 배열char[] a = new char[s];checkSecret = 0; // 현재 p개 중 몇개가 비밀번호 요건에 만족하는지 a = br.readLine().toCharArray();st = new StringTokenizer(br.readLine());for (int i = 0; i < 4; i++) {checkArr[i] = Integer.parseInt(st.nextToken());if (checkArr[i] == 0) {checkSecret++; // i번째 값은 이미 완성됨.}} 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; // j = 맨 왼쪽, i = 맨 오른쪽Add(a[i]); // 오른쪽에 있는 값 추가Remove(a[j]);if (checkSecret == 4) {result++;}} System.out.println(result);br.close();} private static void Remove(char c) {switch (c) {case 'A':if (myArr[0] == checkArr[0]) // 같으면 이번에 빠짐으로써 충족이 안 되는 것이니까 checkSecret 하나 줄임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++; // 'A'가 더 많이 들어온다고 해서 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;}}}현재 백준에서 문제가 통과되지 않고 있는데 혹시 잘못된 부분이라도 있을까요?ㅠ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
미로 탐색 코드 리뷰 부탁드립니다!
반복문을 안 쓰고 짜 봤는데 답은 그대로 나오지만 이렇게 짜도 되는 건지 궁금합니다. 1로 바꿔줬다가 0으로 바꿔주는 시점을 이렇게 해도 괜찮을까요?? 풀이에서는 DFS 돌아올 때마다 해주시는 것 같아서 질문 드립니다! const solution = (miro) => { let ans = 0; const DFS = (N, M) => { if (N < 0 || M < 0 || N > 6 || M > 6) return; if (M === 6 && N === 6) { ans++; } else { if (miro[N][M] === 0) { miro[N][M] = 1; DFS(N - 1, M); DFS(N, M - 1); DFS(N + 1, M); DFS(N, M + 1); miro[N][M] = 0; } } }; DFS(0, 0); return ans; }; console.log( solution([ [0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 1, 0], [0, 0, 0, 1, 0, 0, 0], [1, 1, 0, 1, 0, 1, 1], [1, 1, 0, 0, 0, 0, 1], [1, 1, 0, 1, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0], ]) );
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I qSize를 쓰는 것과 안 쓰는것의 차이
가 뭔지 잘 모르겠습니다 ㅠㅠ어떻게 달라지는지 알려주실 수 있나요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H next > MAX라고 하면 틀리는 이유
http://boj.kr/21fd549ee17c48b9be877802112b7a91if문에서next > MAX라고 하면 틀리네요next >= MAX라고 하면 맞구요 왜 그런걸까요그리고 v.push_back(i) 할 때1, 2, 3 이렇게 넣으면 1 , 2, 3 순서대로 들어가는게 아니라 3, 2, 1 이렇게 되네요 처음 알았습니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
[코드리뷰 요청]2중 포문 안썼는데도 시간초과 발생하는 이유가 뭘까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이중 포문 사용하면 O(N제곱) 나올 것 같아서 조건문에서 ++해주는 방법으로 사용했는데도 시간초과가 나오는 이유가 뭘까요? import java.util.Scanner; // 이중 포문을 피해서 로직을 만들었는데도 시간초과 발생 public class Main { public int solution(int n, int m, int[] arr) { int answer = 0; int start = 0; int sum = arr[start]; for (int i = start+1; i < n; i++) { sum += arr[i]; if (sum == m) { answer++; start ++; i = start; sum = arr[start]; } if (i == n-1) { start ++; // 1 i = start; //2 sum = arr[start]; } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int m = kb.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = kb.nextInt(); } System.out.println(T.solution(n,m,arr)); } }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-G 비슷하게 했는데 5 17 넣었을때 4가 아니라 5가 나오는이유
가 뭘까요 ㅠㅠhttp://boj.kr/11e077cba3d4416581adf491dec7bfde
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
40분쯤 gcd 관련 이해가 안됩니다.
gcd(12,8) -> gcd(8,12-8)이면gcd(a,b) -> gcd(b,a-b) 가 맞는게아닌가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D q에 fire 거리 부분
fire_check[ny][nx]!=INF면 continue잖아요ny nx에 값(!INF인값)이 이미 존재하는데 불이 여러개라fire_check[ny][nx]>fire_check[y][x]+1 인 경우의수는 생길 수 있는데 bfs라 이럴 경우가 안생겨서 굳이 비교 할 필요 없게되나요? 질문이 좀 그런가요 ㅠㅠ
-
미해결자바 코딩테스트 - it 대기업 유제
'ch' 배열을 boolean이 아닌 int로 지정하는 부분에 대해 궁금한 점이 있습니다.
각 학생별 교환 여부만 확인하기위해 선언한 배열이라면, boolean 타입으로도 충분히 판별이 가능할 것 같은데, int 배열로 지정한 부분에 대해 궁금한 점이 있습니다.
-
미해결[EduAtoZ] Python CosPro 1급 예상문제 풀이(40문제)
강의자료 질문입니다.
안녕하세요. 수업 자료 다운로드 받았는데, 1회분 밖에 없는 것 같아서요. 2~4회 자료는 어디서 봐야하나요?
-
미해결Do it! 알고리즘 코딩테스트 with C++
i==k일떄 i++안해도되지않나요
i==k인 경우는 a[i]에 1을 더하더라도 큰 값이 나올텐데i를 오른쪾으로 옮겨버리면 사실상 a[k]보다 더 큰 값만 나오는거 아닌가요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
dis 배열 없이 풀어봤습니다
import java.io.*; import java.util.*; class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; } } public class Main { static int[] dx = {-1, 0, 1, 0}; static int[] dy = {0, -1, 0, 1}; static int[][] board = new int[8][8]; public static void BFS(int x, int y) { int L = 0; Queue<Point> Q = new LinkedList<>(); Q.offer(new Point(x,y)); while(!Q.isEmpty()) { int len = Q.size(); for(int i=0; i<len; i++) { Point tmp = Q.poll(); for(int j=0; j<4; j++) { int nx = tmp.x + dx[j]; int ny = tmp.y + dy[j]; if (nx >= 1 && nx <= 7 && ny >= 1 && ny <= 7 && board[nx][ny] == 0) { board[nx][ny] = L+1; Q.offer(new Point(nx, ny)); } } } L++; } } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for(int i=1; i<=7; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); for(int j=1; j<=7; j++) { board[i][j] = Integer.parseInt(st.nextToken()); } } BFS(1,1); if(board[7][7] == 0) System.out.println(-1); else System.out.println(board[7][7]); } }dis 배열없이 레벨과 board 배열만으로 풀었는데, 채점 결과 맞긴했는데 이렇게 짜도 될까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
tmp.legnth() > 0 공집합일때 출력 안하기 위해..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. tmp.legnth가 0일 경우 공집합이라서0보다 클 경우에만 tmp를 출력하는걸로 하셨는데,이 코드가 잘 이해가 안됩니다. 우선 tmp.legnth가 0일 경우 공집합이라는 것도 잘 모르겠어요.. 혹시 조금 더 쉽게 설명해주실 수 있을까요 ㅠㅠ if (tmp.length()> 0) System.out.println(tmp);
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-M 질문드립니다
공유 소스 보기 (acmicpc.net)cin.tie()와 cout.tie, ios_base::sync~ 구문이 시간을 단축시키기 위함인건 알겠는데 어떤 문제에는 cin.tie와 cout.tie 둘다 쓰이는 반면에 이문제에는 cin.tie만 쓰였는데 어떤 차이가 있는지 궁금합니다 질문글 읽어주셔서 감사합니다!