묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
조합을 구할때 algorithm 함수 next_permutation 사용 가능 여부
제목 그대로 조합을 구할때 next_permutation 을 사용 해도 되는지 궁금합니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문법질문입니다.
import java.nio.channels.Pipe; import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; class Point implements Comparable<Point>{ public int x, y; Point(int x, int y){ this.x = x; this.y = y; } @Override public int compareTo(Point o){ if(this.x == o.x) return this.y-o.y; else return this.x-o.x; } } class Main{ public static void main(String[] args){ Scanner kb = new Scanner(System.in); int n = kb.nextInt(); ArrayList<Point> arr = new ArrayList<>(); for(int i = 0; i < n; i++){ int x= kb.nextInt(); int y= kb.nextInt(); System.out.println(x+","+y); arr.add(new Point(x, y)); } Collections.sort(arr); System.out.println(">>"); for (Point o: arr) System.out.println(o.x+" "+o.y); } } arr.add(new Point(x, y));이 부분을 출력해서 값을 프린트하고 싶은데 어떻게 코드를 짜야하나요??public static void main(String[] args){ Scanner kb = new Scanner(System.in); int n = kb.nextInt(); ArrayList<Point> arr = new ArrayList<>(); for(int i = 0; i < n; i++){ int res; int x= kb.nextInt(); int y= kb.nextInt(); System.out.println(x+","+y); arr.add(new Point(x, y)); res = arr.add(new Point(x, y)); System.out.println(res); }이렇게 res 변수를 만들어서 작석했는데 에러가 나네요 ㅠ 도와주세요ㅠㅠㅠ
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
최악의 경우 연산 질문이 있습니다.
강의를 수강하고 있는 학생입니다. 다만 최악의 경우를 따지는 데에서 조합의 수 x n(학생의수) 의 최악의 경우15C7 x 30000인데 이경우 6435x30000=193,050,000가 도출됩니다.이러면 계산이 2억번 가까이 되어서 1000ms에 풀수 있는지 여쭤 볼 수 있을 까요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
바둑이 승차관련 sum>c return으로 조건을 돌면 최대값을 찾기 전에 프로그램이 종료되는건 아닌가요??
<script> function solution(c, arr){ let answer=Number.MIN_SAFE_INTEGER; let n=arr.length; function DFS(L, sum){ if(sum>c) return; if(L===n){ answer=Math.max(answer, sum); } else{ DFS(L+1, sum+arr[L]); DFS(L+1, sum); } } DFS(0, 0); return answer; } let arr=[81, 58, 42, 33, 61]; console.log(solution(259, arr)); </script> 아직 재귀에 대한 이해가 짧아 잘 모르겠습니다.답은 242인데,만약 sum의 값이 181이었고 다음에 나온 sum의 값이275라고 한다면sum>259일때 return으로 함수가 종료되고최대값인 242를 찾지 못하고 181로 종료가 될수도 있는것 아닌가요??아니면 제가 이해를 잘못한건지요??
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
15. 토마토(BFS : Breadth First Search) 질문
첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다.라고 해서 m, n 을 입력 받았는데 왜 틀린지 모르겠습니다.강사님 풀이에서 n, m이라고 받으신 이유도 모르겠습니다....아래 코드에서 제대로 array 받아오는 것 같은데 이유를 틀리는 이유를 모르겠습니다...!강사님이 제공해주신 테스트 케이스는 다 통과하지만 백준에서는 틀리는 이유를 모르겠습니다... 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 # 받아온 array [0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 1] 8import sys sys.setrecursionlimit(10 ** 6) # sys.stdin=open("in5.txt", "r") def valid_coord(x, y): if 0 <= x < m and 0 <= y < n: return True else: return False def print_array(array): for elem in array: print(elem) def bfs(): while queue: # tmp_len = len(queue) # for _ in range(tmp_len): temp = queue.popleft() temp_dis = dis[temp[0]][temp[1]] for dx, dy in zip(dxs, dys): nx = temp[0] + dx ny = temp[1] + dy # 익지 않은 상태이거나 유효한 좌표일 때 if valid_coord(nx, ny) and arr[nx][ny] == 0: queue.append((nx, ny)) arr[nx][ny] = 1 dis[nx][ny] = temp_dis + 1 if __name__ == '__main__': from collections import deque n, m = map(int, input().split()) arr = [] for _ in range(m): arr.append(list(map(int, input().split()))) dis = [] for _ in range(m): dis.append([0] * n) dxs = (-1, 1, 0, 0) dys = (0, 0, -1, 1) # print_array(arr) # print('----') # print_array(dis) queue = deque() for i in range(m): for j in range(n): if arr[i][j] == 1: queue.append((i, j)) bfs() # print_array(dis) # arr에서 0을 발견하면 flag = False로 설정 flag = True for i in range(m): for j in range(n): if arr[i][j] == 0: flag = False result = 0 if not flag: print(-1) else: result = max(max(dis)) print(result)
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 2-2
안녕하세요 선생님 열심히 알고리즘 강의 수강하고 있는 학생입니다.다름이 아니라 질문드릴게 있어서 글 쓰게 되었습니다.섹션 2의 2번째 문제에서 for i in range(T): n,s,e,k = map(int,input().split()) a=list(map(int,input().split())) a=a[s-1:e] a.sort() print("#%d %d" %((i+1),a[k-1]))코드를 이렇게 짰습니다. 이렇게 짜면 맞지만, 저 코드중 굵게 표시한 곳을 붙여서 a=a[s-1:e].sort() 라고 붙여쓰면 오류가 납니다.구글링을 해봐도 알 수 없기에 질문 드렸습니다.감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
map 질문드립니다.
vector<int> v{1,1,2,2,3,3};에서 map을 이용해서 중복제거하셨던데for(int i : v){ if(mp[i]){ continue; }else{ mp[i] =1; }} i에 순서대로 1,1,2,2,3,3이 들어가는거까진 알겠는데이 for문을 돌면 map에는 1,2,3이 어떻게 들어가는건지 이해가 잘 안가네요 ㅠㅠ첫번째 mp[1]이 들어가면 else로 들어가서 mp[1] = 1이 들어가고 다음 i=1이 들어가면 if(mp[1])에서 1이 있으므로 true이고 continue로 들어가는건 알겠습니다.i=2가 들어가면 이때부터if(mp[2])에서 여기부터 이해가 잘 안갑니다. 어떻게 mp[2]에 2가 들어가는지요..
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
04-03 매출액의 종류 System.out.printf
04-03 매출액의 종류 문제를 풀던 중,System.out.print() 로 출력하면 정답 처리가 되던 부분이System.out.printf()로 출력 할 경우 time exceed 처리가 됩니다. System.out.printf()의 문제인지 궁금합니다.. 아래는 타임아웃된 소스코드인데,강의자료에서 출력문만 변경 한 것입니다. ======================================================== import java.util.*;class Main { public ArrayList<Integer> solution(int n, int k, int[] arr){ ArrayList<Integer> answer = new ArrayList<>(); HashMap<Integer, Integer> HM = new HashMap<>(); for(int i=0; i<k-1; i++){ HM.put(arr[i], HM.getOrDefault(arr[i], 0)+1); } int lt=0; for(int rt=k-1; rt<n; rt++){ HM.put(arr[rt], HM.getOrDefault(arr[rt], 0)+1); answer.add(HM.size()); HM.put(arr[lt], HM.get(arr[lt])-1); if(HM.get(arr[lt])==0) HM.remove(arr[lt]); lt++; } return answer; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); int n=kb.nextInt(); int k=kb.nextInt(); int[] arr=new int[n]; for(int i=0; i<n; i++){ arr[i]=kb.nextInt(); } for(int x : T.solution(n, k, arr)) System.out.printf("%d", x); }}
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
[응급실] 질문 드립니다.
선생님 안녕하세요응급실 문제를 제가 처음 푼 방식대로 채점을 받아 보았는데,문제에 있는 예시 문제는 제대로 통과가 되었는데요.채점 사이트 내에 있는 예시는 오답이 나와 질문 드립니다. 같은 위험도를 가진 수가 나오는 경우) idx가 작거나 같으면 answer++;하는 방식으로 문제를 구현하였습니다.public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int M = 0; Queue queue = new LinkedList(); for (int i=0; i<n; i++){ int a = sc.nextInt(); queue.offer(a); if(i == m){ M = a; } } System.out.println(solution(n,m,M,queue)); } private static int solution(int n, int m, int M, Queue queue) { int answer =0; for (int i=0; i < n; i++){ int que = (int)queue.poll(); if(que > M){ answer++; } else if(que == M && i <= m){ answer++; } } return answer; } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <algorithm> #include <map> #include <set> #include <vector> #include <queue> #include <cstring> int N, M; int cache[10001] = {-1,}; int traverse(std::map<int, std::vector<int>>& treeMap, int node) { if (treeMap.find(node) == treeMap.end()) { cache[node] = 1; return 1; } if (cache[node] != -1) { return cache[node]; } int sum = 0; std::vector<int> v = treeMap[node]; for (int i = 0; i < v.size(); ++i) { int tmp = traverse(treeMap, v[i]); sum += tmp; } cache[node] = sum + 1; return sum + 1; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); std::cin >> N >> M; memset(cache, -1, sizeof(cache)); std::map<int, std::vector<int>> treeMap; for (int i = 0; i < M; ++i) { int from, to; std::cin >> to >> from; if (treeMap.find(from) == treeMap.end()) { std::vector<int> v; v.reserve(N); v.push_back(to); treeMap[from] = v; continue; } treeMap[from].push_back(to); } std::map<int, std::vector<int>> countMap; int maxCount = 0; for (auto iter : treeMap) { const int startNode = iter.first; memset(cache, -1, sizeof(cache)); int nodeCount = traverse(treeMap, startNode); maxCount = std::max(maxCount, nodeCount); if (countMap.find(nodeCount) == countMap.end()) { std::vector<int> v; v.push_back(startNode); countMap[nodeCount] = v; continue; } countMap[nodeCount].push_back(startNode); } for (int i = 0; i < countMap[maxCount].size(); ++i) { std::cout << countMap[maxCount][i] << " "; } std::cout << std::endl; return 0; }답이 틀렸다고 나오는데 어디서 왜 틀렸는지 잘 모르겠습니다. 혹시 이 부분을 설명해주실 수 있으실까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
01-01. 문자찾기에서 부호 >= 와 > 의 차이가 궁금합니다.
선생님 안녕하세요. 01-01. 문자찾기 문제를 푸는 중에 궁금한 점이 생겨서 질문 드립니다. import java.util.Scanner; public class Ch01_1 { public int solution(String s, char c) { int solution = 0; s = s.toUpperCase(); c = Character.toUpperCase(c); for(int i=0 ; s.length() > i; i++ ) if(s.charAt(i)== c) solution++; } return solution; } public static void main(String[] args) { Ch01_1 ch = new Ch01_1(); Scanner sc = new Scanner(System.in); String s = sc.next(); char c = sc.next().charAt(0); sc.close(); System.out.println(ch.solution(s,c)); } }여기서 상단의 for(int i=0 ; s.length() > i; i++ ) 부분에서 궁금한 점이 있는데요 ! 선생님이 알려주신 풀이인 s.length() >= i 가 아니라 s.length() > i로 풀면 아래와 같이 오류가 뜨는데, 이유가 궁금해서요 ! ! >= i 랑 > i 랑 큰 차이가 있는건가요? 반복횟수랑 문자열 s의 길이가 '같거나 작을 경우' 라는 조건은 안되는걸까요?? (오류 사진입니다.)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의 내용 정리
코딩 테스트 준비를 처음하는 취준생입니다. 다름이 아니라 학습 내용 정리 및 학습을 했다는 나름의 증명으로 개인 blog에 내용을 정리하고자 합니다.코드랑 수업 내용 일부분을 캡쳐 해서 블로그에 사용해도 되는지 궁금해서 질문을 남깁니다.출처는 반드시 밝히겠습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안 하루만에 다 봤는데요.,
c# 4년차입니다. 비전공자입니다.c++로 알고리즘 풀어보려고 일단 교안은 코드 쳐보면서 다 보았습니다.다만, 이해가 안가는 부분도 중간중간에 있지만 일단 한번은 훑어보았습니다.(비전공자라..쉽지는 않네요)지금상태에서 바로 0주차부터 강의들어도 될까요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
dev c++ 자체 오류..
어제 강의 결제하고 오늘부터 시작하려는데 이렇게 뜨고 다른 코드도 전부 안되네요..
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
아래 코드와 같이 구현해도 시간복잡도는 같을까요?
function solution(m, arr) { let answer = 0; let n = arr.length; let p1 = 0; let p2 = 1; let tmp = arr[p1] + arr[p2]; while (p2 < n) { if (tmp === m) { answer++; tmp = tmp - arr[p1++] + arr[++p2]; } else if (tmp < m) { tmp += arr[++p2]; } else { tmp -= arr[p1++]; } } return answer; } let a = [1, 2, 1, 3, 1, 1, 1, 2]; console.log(solution(6, a));
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
log(2n+1) 이 아니라 log2의(2n) 아닌가요?
갑자기 2n+1 이 왜 나온지 모르겠습니다...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-B, 기타레슨
for(int i = 0; i < n; i++){ if(mid - a[i] < 0){ mid = temp; cnt++; } mid -= a[i]; } if(mid != temp) cnt++;이 부분이 아무리 봐도 들어도 이해가 안됩니다...ㅠㅠ그리고 rt를 누적합으로 둬야되는 이유도 잘 모르겠습니다.누적합을 이분탐색으로 mid를 두는것이 크기를 정한다는 의미도 뭔가 와닿지 않습니다..
-
미해결제주코딩베이스캠프 Code Festival: Python 100제
41번 문제 질문입니다.
def chech_prime(n):if n <= 1:return "NO"i = 2소수 = Truewhile (i**2) < n:if n % i == 0:소수 = Falsebreaki += 1if 소수:return "YES"else:return "NO"print(chech_prime(4))4를 넣었을 때 'NO'가 아니라 'Yes'가 나옵니다. while (i**2) <= n: 여기에 등호를 추가해야 하는거 아닌가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
현대엔지비(Softeer) 코딩 테스트 관련해서
Language가 GNU C++ 17인데 #include<bits/stdc++.h>라이브러리 사용 가능한거죠??
-
해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
sum == int(total/2)
선생님께서는 sum==(total-sum) 을sum == total // 2로 바꾸면 홀수일 때 문제가 생긴다고 하셨는데만약 sum == int(total / 2)로 코드를 짜도 잘 작동할까요?감사합니다.