묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4 - E 경사로 문제
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 4 - E 경사로 문제를 영상 보기 전에 구현해봤는데 어디가 틀린 부분인지 도저히 모르겠습니다.행과 열을 나눠 각 칸마다 다음 칸과 비교하는 방식으로 문제를 풀어봤는데.. 게시판이나 여러 반례 케이스들을 대입해봐도 틀린 부분이 어딘지 모르겠습니다... 살려주세요 ㅠ http://boj.kr/5559f53ca9f24925ac272571115de33d
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
풀어보았습니다. 감사합니다.
감사합니다.function solution(arr) { const answer = []; let max = 0; arr.map((v) => { const value = String(v); let sum = 0; for (let i = 0; i < value.length; i++) { sum += Number(value[i]); } if (max <= sum) { max = sum; answer.push(v); } }); return Math.max(...answer); } console.log(solution([128, 460, 603, 40, 521, 137, 123])); 동영상을 보고 완벽한 코드가 아니란걸 알았습니다 ㅜㅜ 수정합니다.function solution(arr) { let answer = ""; let max = 0; arr.map((v) => { const value = String(v); let sum = 0; for (let i = 0; i < value.length; i++) { sum += Number(value[i]); } if (max < sum) { max = sum; answer = v; } else if (sum === max) { answer = answer > v ? answer : v; } }); return answer; } console.log(solution([128, 460, 603, 40, 521, 137, 123]));
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
사다리타기 (DFS)문제
선생님 안녕하세요. 한가지 질문이 있습니다. 커뮤니티에 다른분이 올려주신 코드를 토대로 만들어 보았는데 답이 2가 나오더라고요.... def dfs안에 기존과 다르게 else:를 넣고 바로 dfs(r-1, c)를 해보니 답이 2가 나오는데 어떻게 해서 2가 나오는지 헷갈립니다.. ㅠㅠ arr = [list(map(int,input().split())) for _ in range(10)] for i in range(10): if arr[9][i] == 2: start = i break def dfs(r,c): if r == 0: print(c) return if 0<= c-1 and arr[r][c-1] == 1: arr[r][c-1] = 2 dfs(r,c-1) elif c+1 < 10 and arr[r][c+1] == 1: arr[r][c+1] = 2 dfs(r,c+1) else: dfs(r-1,c) dfs(9,start)
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
괄호 개수 카운
이런식으로 괄호의 개수를 카운트 해서 짜봤는데 괜찮은가요??<html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(s){ let answer="YES"; let array1 = []; let array2 = []; for(let a of s){ if(a ==="(") array1.push(a); if(a===")")array2.push(a); } if(array1.length!==array2.length) answer=false; return answer; } let a="(()(()))(()"; console.log(solution(a)); </script> </body> </html>
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-H 질문있습니다
http://boj.kr/4976421e71824203b6ab2f6f775d64c5스스로 풀고 선생님 코드가 더 시간이 빠르시길래 선생님 방식으로 다시 짜봤었는데 계속 메모리초과가 나서 별짓 다하다가++comp_cnt 이부분을 comp_cnt++;comp[comp_cnt] = dfs(i, j, comp_cnt); 이렇게 하니까 통과하더라구요.. 혹시 dfs돌릴때 comp_cnt가 증가된 값이 들어가지않나 디버깅해봐도 증가된 상태로 dfs가 돌아가고있고.. 차이가 없는 것 같은데 통과되지 않아서 이게 뭔가 싶어서 질문드려봅니다.. 뭐가 잘못된건지 몰라서 너무 답답합니다 ㅠㅠ
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
소수구하기-백준 1929 질문
안녕하세요 강의 너무너무 잘보고 있습니다소수구하기 백준 1929 강의 중for(소수의 배수값을 N까지 반복) for (int j=i+i; j<=N; j=j+i){ }이 부분에서 for문 시작 ( j=i+i )이랑 증감식 ( j=j+i ) 이 이해가 잘 되지않아질문 남깁니다.그리고 저 for문은 컨티뉴일 경우에는 실행이 안되는건가요 ?(ex)4이면 컨티뉴 >> 하고 for문을 도는건가요?) 감사합니다
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
영상 보기전에 직접 풀어보았습니다.
감사합니다.function solution(str) { const answer = []; let char = ""; let count = 0; str.split("").filter((v, i) => { if (i === 0) { char = v; answer.push(v); } if (char === v) count++; else { if (count > 1) answer.push(count); answer.push(v); char = v; count = 1; } if (i === str.length - 1) if (count > 1) answer.push(count); }); return answer.join(""); } //console.log(solution("KKHSSSSSSSEE")); //console.log(solution("KKHSSSPPPEE")); console.log(solution("KKHSSTTPPSEE"));
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
for of문에서 let을 사용하시는 이유가 있을까요?
for ( const of array )가 아닌, for ( let of array )를 사용하시는 이유가 궁금합니다. 원본 배열 인덱스의 값을 지키려는 의도면 const가 맞지 안나해서요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-w 질문입니다!
안녕하세요, 큰돌님 1912 연속합 문제를 풀던중, 시간 복잡도 관련해서 질문이 있습니다.https://www.acmicpc.net/source/69965978 이 코드에서 시간 복잡도는 n * (n/2) 라서, 시간 초과가 뜨지 않을거라고 생각하는데, 시간 초과가 납니다. for (int i = 0; i < n; i++){ for (int j = i+1; j < n; j++){}}이게 O( n *(n/2)) 이고,for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){}}이게 O(n*n) 이라고 생각합니다
-
해결됨코딩테스트 [ ALL IN ONE ]
백트래킹 강의 언제 올라오나요?
다른 글에서 12월 1일안에 다 올라온다는 글을 봤는데 아직도 안올라와서요
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
테스트케이스 2번 질문
안녕하세요 선생님! 문제 의도상 K개의 합이 모두 같을 수도 있으니,K번째 수가 없다면 -1을 출력하는 조건은 이해하였습니다그런데 문제에 K는 50 이하의 값이라고 명시되있는데테스트케이스에는 K가 1200인 케이스가 있어서 저는 이 부분이 잘못되었다고 생각하여 글 올립니다!감사합니다!
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
시간 복잡도
혹시 이렇게 풀면 시간 복잡도는 어떨까요 ?<html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(arr1, arr2) { let answer = []; arr1.map((a, i) => { if (arr2.includes(a)) { answer.push(a); } }); return answer.sort((a, b) => a - b); } let a = [1, 3, 9, 5, 2]; let b = [3, 2, 5, 7, 8]; console.log(solution(a, b)); </script> </body> </html>
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-E 해당문제 이분탐색은 솔루션은 어떨까요?
큰돌님 안녕하세요? 오늘은 의견 질문을 들고 왔습니다강의 에서는 map을 제시하셨지만,이분탐색 챕터라 이분탐색으로 풀었더니 공간/시간복잡도가 map보다 좋아보여 의견을 여쭈고 싶습니다. 아이디어는 lower_bound로 해당 인덱스를 찾고, 그게 A(혹은B)집합에도 있다면 차집합에 +- 하는 방식입니다.아래는 제 코드입니다.http://boj.kr/df642c7e59444b08bd8e8e654012eafa 아래는 큰돌님과 제 소스코드의 시간/공간 복잡도 비교입니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L1111_1940 주몽
안녕하세요 큰돌님, 문제를 풀다가 테스트 코드랑 제가 직접 만든 케이스는 잘 돌아가는데 백준에 넣으면 바로 틀려버립니다..ㅎㅎ 저는 이 문제를 visited 배열로 풀었는데요, 벡터에 고유 번호를 담고 만약 m=9라면 먼저 for문을 통해 v의 원소를 하나하나 확인합니다. 먼저 9-2=7이 존재 하는지 확인하고 존재 한다면 갑옷을 만드는 경우가 있는거니까 cnt++을 했습니다. 어디서 반례가 생기는지 모르겠습니다.ㅜㅜ 별로 효율적이지 못한 코드 같긴하지만 한번 검토 부탁드립니다..ㅎㅎ http://boj.kr/2e4c75e8c7d24a1284cc02827162c36c
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
선생님 머리를 싸메고 풀어 봤습니다.
혹시 이 코드를 더 효율적으로 짤 수 있는 방법이 있을까요? /** * @param { string } str * @param { string } x * */ function solution(str, x) { const originStr = str.split(''); const indexArr = []; const result = []; for (let i = 0; i < str.length; i++) { if (originStr[i] === x) { indexArr.push(i); } }; for (let i = 0; i < originStr.length; i++) { const matchResult = []; for (let j = 0; j < indexArr.length; j++) { matchResult.push({ val : Math.abs(indexArr[j] - i), idx: j }); }; result.push(matchResult.sort((a, b) => { return a.val - b.val })[0].val); }; return result; }; console.log(solution('teachermode', 'e'));
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
챕터3의 5.문자열 압축
5.문자열 압축에서 s=s+' ' ;을 사용해서 문자열을 하나더 늘려준다는것은 이해했습니다.다만 혼자 문제를 풀당시 해당 작업을 하지않아도 값이 올바르게 나오며 오류가 나지 않았는데 왜 오류가 나지않을까요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
연속부분수열2(Two Pointers Algorithm)
안녕하세요. M = 5let a=[6, 3, 1, 2, 3];혹시 만약 처음부터 배열에 6이 들어가있다면 5보다 큰경우가 될텐데 그럼 rt-lt+1이 때문에 안될꺼같은데 이런경우 어떻게 될까요..?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
idle로 실행 질문
지금 인텔리제이로 실행을 해보려고 하고있는데 입력을 어떻게 받아서 써야하는지 감이 안옵니다... 이런상태입니다... 어떻게 하면 될지 알려주시면 감사하겠습니다!!!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6 -B 모범답안의 line 6은 반례라고 보면 될까요?
큰돌님 안녕하십니까?해당문제 큰돌님과 비슷하게 접근까지하여 예제 까지는 통과 하였습니다.아래 코드는 큰돌님 모범 답안 중 일부인데요,볼드 처리 한 부분을 생각못해서 50%에서 틀린 것 같습니다.지금이야 해설과 강의를 보고 그럴 수 있겠구나 하지만, 이런 부분을 생각 못했을 때는 반례를 생각하는 부분으로 접근하는게 맞을까요?bool check(int mid){ if(mx > mid) return false; // line 6 ...이하 생략 int main(){ cin >> n >> m; for(int i = 0; i < n; i++){ cin >> a[i]; sum += a[i]; mx = max(mx, a[i]); } ...이하 생략아래는 큰돌님 모범답안 링크입니다.https://www.acmicpc.net/source/share/e575431157ef40f48ecb65d4426ffbcb
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
8-11 미로의 최단거리 (BFS)
import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Main { static int[][] miro, dis; static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0, -1, 1}; static int min; static boolean flag; public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); miro = new int[9][9]; dis = new int[9][9]; min = 0; flag = false; for (int i = 0; i < 9; i++) { if (i == 0 || i == 8) { for (int j = 0; j < 9; j++) { miro[i][j] = 1; } } else { miro[i][0]=1; miro[i][8]=1; } } for (int i = 1; i <= 7; i++) { for (int j = 1; j <= 7; j++) { miro[i][j] = sc.nextInt(); } } miro[1][1]=1; dis[1][1]=0; T.BFS(new int[]{1, 1}); System.out.println(min); } void BFS(int[] loca) { Queue<int[]> Q = new LinkedList<>(); int[] cl = loca; Q.offer(cl); while (!Q.isEmpty()) { if (flag) { return; } cl = Q.poll(); for (int i = 0; i < 4; i++) { int[] nl = {cl[0] + dx[i], cl[1] + dy[i]}; if (miro[cl[0] + dx[i]][cl[1] + dy[i]] == 0) { Q.offer(nl); dis[cl[0] + dx[i]][cl[1] + dy[i]] = dis[cl[0]][cl[1]]+1; miro[cl[0] + dx[i]][cl[1] + dy[i]] = 1; if (Arrays.equals(nl,new int[]{7,7})) { min = dis[cl[0] + dx[i]][cl[1] + dy[i]]; flag = true; return; } } } } } }좌표를 클래스로 정의하지 않고 배열로 매개변수를 사용해서 BFS 구현을 하였는데 오답이 나옵니다 ㅜㅜ 출력 12는 나오는데 무엇이 문제일까요??