묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
퀴즈 답안
퀴즈 답안지는 따로 제공되지 않나요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
max와 findindex 사용해서 풀어도 되나요?
function solution(arr) { let answer = Array.from({ length: arr.length }, () => 0); let rank = 1, max = Number.MAX_SAFE_INTEGER; for (let i = 1; i <= arr.length; i++) { let idx = arr.findIndex((val) => val === Math.max(...arr)); if (arr[idx] === max) { // 동점자이면 answer[idx] = rank; } else { answer[idx] = i; rank = i; } max = arr[idx]; arr[idx] = -1; } return answer; } let arr = [87, 89, 92, 100, 76]; let arr2 = [20, 20, 20, 10, 50, 15]; console.log(solution(arr)); 저 혼자 풀었을 때 이중 for문이 아닌 위와 같이 풀었는데 혹시 이렇게 풀어도 되는걸까요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
시간 복잡도(7.소수의 개수(에라토스테네스 체))
안녕하세요해당 문제의 답을 스스로 작성해보았는데요이렇게 했더니 n의 숫자가 작을 때는 잘 작동 되지만 숫자가 커지면 작동이 안됩니다. 선생님의 코드처럼 이중 for문을 사용했는데 선생님의 코드는 잘 작동이 되고 제 코드는 잘 작동이 되지 않습니다.. 선생님의 코드는 배수를 활용해서 더 빠를 것이라고 생각이 되긴 하는데, 제 코드를 어떻게 수정하면 좋을까요n = int(input()) cnt =[0] * (n+1) count =0 for i in range(1,n+1): for j in range(2,n+1): if i % j == 0: cnt[i] = cnt[i] + 1 if cnt[i] == 1: count = count +1 print(count)
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
for문 범위 관해서 질문드립니다
섹션 2의 3번 문제에서는 첫번째 for문에 n을 넣어서 돌렸는데섹션 2의 4번 문제에서는 첫번쨰 for문에 a를 넣어서 돌렸습니다. 두 문제가 비슷한 유형인거같아서 왜 같은 방식으로 for문을 돌리지 않는지 헷갈려서 질문남깁니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
BFS 당근마킷 엔지니어 승원이 문제 제꺼 한번 봐주실 수 있나요?
안녕하세요 큰돌님.문제 해답 보기 전에 영상 멈추고 풀기 시작했다가 1시간이나 까먹었네요.... 이래도 성장 할 수 있을지 고민입니다.개인적인 고민은 뒤로 두고 다음의 코드로 풀긴 했는데 이게 맞는 코드인지 봐주실수 있나요?항상 질문 답변 해주셔서 감사합니다. #include <bits/stdc++.h> using namespace std; int N, M, startY, startX, destY, destX, adj[104][104]; int dy[] = {1, 0, -1, 0}; int dx[] = {0, 1, 0, -1}; map<pair<int, int>, int> visited; void bfs(int y, int x) { pair<int, int> pos = {y, x}; visited[pos] += 1; queue<pair<int, int>> q; q.push(pos); while (q.size()) { auto loc = q.front(); q.pop(); for (int i = 0; i < 4; ++i) { int ny = loc.first + dy[i]; int nx = loc.second + dx[i]; pair<int, int> prevOffset = {loc.first, loc.second}; pair<int, int> nextOffset = {ny, nx}; if (ny < 0 || nx < 0 || ny >= M || nx >= N) continue; if (visited[nextOffset]) continue; if (adj[ny][nx] == 0) continue; visited[nextOffset] = visited[prevOffset] + 1; q.push(nextOffset); if (ny == destY && nx == destX) q = queue<pair<int, int>>(); } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> M; cin >> startY >> startX; cin >> destY >> destX; for (int i = 0; i < N; ++i) for (int j = 0; j < M; ++j) cin >> adj[i][j]; bfs(startY, startX); cout << visited[make_pair(destY, destX)] << "\n"; return 0; }
-
해결됨코딩테스트 [ ALL IN ONE ]
leetCode - Two Sum 문제 Memory Limit Exceeded 에러
class Solution(object): def twoSum(self, nums, target): def backtrack(start, curr): # base case : 2개의 합을 더해서 target과 같으면 if len(curr) == 2 and sum(nums[i] for i in curr) == target: return curr # recursion : for i in range(start, len(nums)): curr.append(i) res = backtrack(i + 1, curr) if res: return res curr.pop() return None return backtrack(0, [])https://leetcode.com/problems/two-sum/submissions/1130560186/ 이 코드로 작성해서 leet-code의 two sum 문제에 제출해봤을 때 Memory Limit Exceeded 에러가 나는건 어떻게 해결해야 할까요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
14번만 채점파일 없다는걸 미리 알려줬으면 좋겠어요
채점파일 찾느라 3번정도 다운로드 받고 찾아 해맸습니다.공유하는 파일에 설명을 같이 넣는다 던지 강의 끝까지 보기전에 미리 알게 했으면 더 편리 했을것 같습니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
3강 누적합 11660 2차원 배열 문제
안녕하세요!강의영상과 백준 문제에서 입력 순서를 x1,y1,x2,y2 형식으로 입력을 받는데 이렇게 입력할 경우 결과가 반대로 나오는거 같습니다.ex. 1,2,1,2일 경우 2,1,2,1의 결과가 출력인덱싱을 graph[y][x] 형태로 진행하여 파생된 문제 같습니다.그러므로 입력을 y1,x1,y2,x2로 변경하거나 2차원 배열 인덱싱을 graph[x][y] 형태로 변경해야할 것 같습니다.제가 이해한게 맞나요?항상 좋은 강의해주셔서 감사드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
sstream에 있는 split()을 써도 되나요?
#include <sstream> #include <vector> int main() { std::string str = "1, 2, 3, 4, 5"; // str을 ,로 분리합니다. std::vector<std::string> tokens = split(str, ","); // 분리된 토큰을 출력합니다. for (const auto& token : tokens) { std::cout << token << std::endl; } } bard에 물어보니 string을 vector로 바꿔주는 split 함수가 있다고 하는데, 코딩 테스트 환경에선 이런 라이브러리를 사용 할 수가 없어서 함수를 외워서 써야하는건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 116페이지 Ralo구조체 출력 결과 질문입니다.
안녕하세요, 강의를 잘 듣고 실습 중 질문이 있습니다. 알고리즘 교안 116페이지 Ralo구조체 예제 코드 진행 시 출력물에 대한 질문입니다. #include <bits/stdc++.h> using namespace std; struct Ralo { int a, b; double c, d, e; }; void print(Ralo ralo) { cout << ralo.a << " " << ralo.b << " " << ralo.c << " " << ralo.d << " " << ralo.e << '\n'; } int main() { Ralo ralo = {1, 1, 1, 1, 1}; print(ralo); vector<Ralo> ret; ret.push_back({1, 2, 3, 4, 5}); ret.push_back({1, 2, 3, 4, 6}); ret.push_back({}); ret.push_back({1, 3}); for (Ralo ralo : ret) { print(ralo); } return 0; }위 예시에서 a, b의 자료형은 int이고 c, d, e 의 타입은 double라고 먼저 선언을 하게 되는데, main함수에서 출력 시 왜 일관되게 정수형으로 출력되는지 이해가 안됩니다.(형변환이 일어나야하거나, 타입 불일치에 따른 에러가 떠야 하는게 맞는거 아닌가요 ?!) 제가 부족한 개념이 많이 있을 수도 있으니 너그럽게 읽어주시면 감사하겠습니다. ^^;;
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-K 문제 틀린 로직인가요?
안녕하세요 큰돌선생님 매번 좋은강의와 코드 감사합니다강의와 수업을 복습하며 문제를 다시 풀어보았는데요, 제 처음 풀이는 플러드 필을 사용하면 깔끔하게 풀 수 있을것 같아서 적용하여 풀어보았는데, 문제의 예제조차 통과하지 못하여 그냥 새롭게 큐를 계속 새로 만들어서 하는 방식으로 수정하여 통과하였습니다. 근데 첫번째 접근방법의 로직에서 틀린부분이 없다고 생각하는데 혹시 어디가 틀린것인지 봐주실 수 있으신가요? 새롭게 미세먼지가 퍼지는 부분을 큐에 계속 담는 방식을 사용하였습니다. 첫번째 틀린 코드http://boj.kr/cdaa0817a0054c8aaa05db4a94fd4cc1 수정후 정답 코드http://boj.kr/48dc28720f1840d78af14656ac682d39
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
변수 선언에 대한 결과 차이
#include <bits/stdc++.h>using namespace std;string s;int cnt[26];int main(){ cin >> s; for(char a : s){ cnt[a-'a']++; } for(int i = 0; i <= 26; i++){ cout << cnt[i] << " "; } return 0;} 이렇게 실행할 경우 baekjoon을 복붙하면 정상적인 결과가 나옵니다. 나중에 복습할 때 안 보고 풀어봤습니다만...변수 선언을 다음과 같이 하니까 결과 값이 달라집니다.int cnt[26];string s;사실상 순서만 바뀌었는데 왜 이렇게 결과가 바뀌는지 궁금합니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
[최대 길이 연속부분수열] 틀린 이유
import java.util.*; class Main { public int solution(int n, int m, int[] arr) { int lt = 0, sum = 0, max = 0, count = 0; for(int rt = 0; rt < n; rt++) { if(arr[rt] == 1) { sum += arr[rt]; } else if (arr[rt] == 0) { if(count++ < m) { sum += 1; } else { if (sum >= max) { max = sum; sum = 0; lt ++; rt = lt; count = 0; } } } } return max; } public static void main(String[] args) { Main T = new Main(); Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) { arr[i] = in.nextInt(); } System.out.print(T.solution(n, m, arr)); } }논리적으로 틀린건 없는거 같고, 예시코드도 틀린게 없는데 왜 오답이 나오는지 모르겠습니다 !!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
테스트 케이스 하나가 오답인데 어떤 부분이 문제인지 모르겠습니다ㅠ
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; class Main { public static void main(String[] args) throws IOException { Main T = new Main(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); String str2 = br.readLine(); System.out.println(T.solution(str1, str2)); } public static String solution(String str1, String str2) { HashMap<Character, Integer> map1 = new HashMap<>(); HashMap<Character, Integer> map2 = new HashMap<>(); for (char x : str1.toCharArray()) { map1.put(x, map1.getOrDefault(x, 0) + 1); } for (char x : str2.toCharArray()) { map2.put(x, map2.getOrDefault(x, 0) + 1); } String answer = ""; for (char x : map1.keySet()) { if (map1.containsKey(x) == map2.containsKey(x)) { if (map1.get(x) == map2.get(x)) answer = "YES"; else answer = "NO"; } } return answer; } }테스트케이스 하나를 통과하지 못하는데 제가 생각하지 못한 부분이 있는지 궁금합니다!코드가 효율적이지 않을 수는 있으나 저렇게 해도 풀리지 않을까? 해서 작성해봤는데.. 뭐가 문제일까요테스트 케이스ABCDqtqtqEFqGHIJKLMNOPQRSTUVWetagdgXYabcdefghijklmnopqrstuwxyzaBcdewrqwtqFghIJklMnOpqrsTuegagaeVxyYAbCDEfGHijKLmNoPQRStUwWXz
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 시간초과 질문드립니다.
http://boj.kr/e1c3caaa80904ade933b274903722b31 시간초과 해결을 못하겠어서 어디 부분이 틀린건지 잘 모르겠습니다 ㅠㅠ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
혹시 예외가 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. function solution(board, moves) { let answer = 0; //count let stack = []; //바구니 //크레인 for문 돌리기 for (const x of moves) { //크레인 위치, index에 맞게 설정 let idx = x - 1; //borad 체크 for (let i = 0; i < board.length; i++) { //인형 const v = board[i][idx]; //0 & null이면 그냥 넘기기 > 다음값을 넣어야 함 //null = 이미 바구니에 들어간 값 if (v !== 0 && v !== null) { //이미 바구니에 있는 경우 if (v === stack.at(-1)) { let pop = stack.pop(); answer += 2; } else stack.push(v); board[i].splice(idx, 1, null); break } } } return answer; } let a = [[0, 0, 0, 0, 0], [0, 0, 1, 0, 3], [0, 2, 5, 0, 1], [4, 2, 4, 4, 2], [3, 5, 1, 3, 1]]; let b = [1, 5, 3, 5, 1, 2, 1, 4]; console.log(solution(a, b));
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-L 질문합니다
안녕하세요, 선생님 강의 잘 듣고 있습니다!6-L 을 풀던 도중, 제 풀이 방법이 틀렸다고 나와 반례가 궁금합니다.시간 복잡도는 O(n* n/2) 이라 통과 한다고 생각합니다.A[i]에 10을 곱한것은 혹시 모를 부동 소수점 오류가 날지 몰라 처리 해두었습니다.https://www.acmicpc.net/source/70768639
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
강의에서 주신 코드가 입력값이 최악인 경우(ex)10 10) 시간초과 fail받을 코드 아닌가요??
선생님이 주신 테스트 케이스는 통과하지만 문제에 주어진 조건'첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N) 이 주어집니다.'에 최악의 케이스에서는 시간 초과로 통과하지 못한다고 생각합니다. 10,10 을 넣으면 3초를 아득히 넘어버리니까요.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3중 for문으로 변경해서 정답
import java.util.Scanner; public class 멘토링 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int m = scan.nextInt(); int[][] intArrArr = new int[n][m]; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ int temp = scan.nextInt(); intArrArr[temp-1][i] = j; } } System.out.println(solution(n,m,intArrArr)); } private static int solution(int n, int m, int[][] intArrArr) { int answer = 0; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ boolean flag = true; for(int k=0;k<m;k++){ if(intArrArr[i][k] >= intArrArr[j][k]){ flag = false; break; } } if(flag){ answer++; } } } return answer; } } input을 받을 때 학생이 행에 오도록 변경을 해서 등 수를 열로 변경해서 받으면 3중 for문으로도 가능합니다. 참고가 될까 싶어 올려봅니다 화이팅!!
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
splice로 써도 될까요?..?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. <script> function solution(arr){ let answer = arr; let [max, idx] = [-1, -1]; for (let i = 0; i < arr.length; i++){ max = Math.max(...arr) idx = arr.indexOf(max) arr.splice(idx, 1) // 배열 내 값 제거 arr.splice(idx, 0, i+1) // 제거한 자리에 max 순서 넣기 } return answer; } let arr=[87, 89, 92, 100, 76]; // 4 3 2 1 5 console.log(solution(arr)); </script> 섹션2의 5번 등수구하기문제입니다