묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A_19942 인덱스 질문
http://boj.kr/40440de5cbbb48f59125df1e7e30c453질문 3개가 있습니다.1.모든 경우의 수를 찾는 아래의 코드에서 i=0이 아닌 1부터 시작하는 이유는 식재료를 아무것도 고르지 않는 경우의 수는 없기 때문인가요?(최소 1개 이상 식재료를 골라야 하기 때문인가요?) 그러면 그냥 0부터 시작해도 어차피 결과에 영향을 주지는 않으니 그냥 0부터 시작해도 문제는 없겠죠?for (int i=1; i< (1<<n); i++) map은 key-value 쌍으로 알고 있습니다. 그렇다면 아래 코드에서 ret_v의 형태는 (key, value)쌍 으로 (최소 ret 비용, {{1,2,3}, {2,4,5}})이런식으로 들어가 있는건가요? map<int, vector<vector<int>>> ret_v;...if(b>=mp && c>=mf && d>=ms && e>=mv){ if(ret>=sum){ ret=sum; ret_v[ret].push_back(v) 3.처음에 key를 생성할때 insert로 집어 넣어야하는걸로 알고 있는데 그러면 ret_v[ret].push_back(v)말고 ret_v.insert({ret, {v});이런식으로 넣어도 될까요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이 방식은 괜찮을까요?
import sys sys.stdin = open('in5.txt', 'r') if __name__ == '__main__': n = int(input()) arr = list(map(int, input().split())) dy = [0] * n dy[0] = 1 for i in range(1, n): sub = i - 1 while True: if sub < 0: break else: if arr[i] > arr[sub]: dy[i] = max(dy[i], dy[sub] + 1) sub -= 1 else: dy[i] = max(dy[i], 1) sub -= 1 print(max(dy))
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
투포인터의 s, e 포인터 위치 질문
안녕하세요 현재 투포인터 알고리즘 강의를 듣고 궁금한 점이 생겨서 질문을 남깁니다. 투포인터 설명을 듣고 그럼 모든 투포인터 알고리즘 문제에서 "start포인터와 end포인터를 양 끝에 위치시켜놓고 시작하는거구나"라고 생각하고 강의에 있지는 않지만 "프로그래머스 - 보석쇼핑" 문제를 풀던 중에 해당 문제는 투포인터 문제임에도 start와 end를 처음 지점부터 동시에 시작하는 방식으로 풀어야만 했습니다. 제가 생각했을 때 start, end를 양 끝점에 두냐, 혹은 시작점에 두개를 모두 위치시키느냐 를 결정짓는 조건이 문제에서 주어지는 값들이 "sort를 하는 것이 의미있냐 없냐"의 여부에 따라 결정된다고 생각했습니다.문제에서 주어진 값들이 sort하는 것이 의미가 있다면: 양 끝점에 위치문제에서 주어진 값들이 sort하는 것이 의미가 없다면: 모든 포인터 시작점에 위치 (sort한 후에)이렇게 생각해도 맞는 것인지 아니면 그냥 문제를 보고 이를 판단해야 하는 것인지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
소수 check 함수
아래는 소수 판단 여부를 알려주는 함수입니다! 여기서 if(n%2==0) return 0; 이 부분이 모듈러 연산에 이미 포함되어 있는 내용 아닌가요? (n%2==0) 이 조건도 따로 서술해줘야하는지 궁금합니다. bool check(int n){ if(n<=1) return 0; if(n==2) return 1; if(n%2==0) return 0; <-이건 이미 for (int i =2; i*i <=n; i++){ <-모듈러 연산에 포함되어 있는 것 아닌가요? if (n%i==0) return 0; } return 1; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H 시간초과
https://www.acmicpc.net/source/share/71ef58daaf4144a5bf9ab254f862398a3-H 숨바꼭질4 문제에서 정점을 방문하면서 방문한 정점을 벡터에 담고 그 벡터를 큐로 넘겨주어서 k에 도착했을때 벡터를 출력하도록 로직을 짰습니다. 하지만 시간초과가 나오는데 원인을 잘 모르겠어서 질문드립니다. 그리고 추가로 c++에서는 벡터나 배열의 일부분을 잘라서 이용하는 로직은 잘 사용하지 않는지 궁금합니다. JS로 알고리즘을 풀때는 splice 나 slice등으로 배열을 자르고 복사하는 방식을 자주 사용했었는데 지금까지 큰돌님의 강의를 들으면서 그 와 같은 방식은 잘 못 본 것 같아서 질문드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-K 공기청정기가 (y,x) 0,0이나 n-1,0에 걸쳐 있는 경우
이 경우는 제외되나요? 아니면 한쪽 v에는 아무것도 안들어가지고 다른 한쪽만 공기청정 되는건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-J 질문
지금 해설 코드가 7:40에서 2번으로 푸신 거죠? 1번으로 푸신게 아니라? 해설 코드 에 1,2번이 다 있나요? 저는 1번으로 생각했는데 지금 해설 코드가 2번으로 푸신 거 같고 2번도 로직은 이해가 가는데 해설 코드는 이해가 안되서 질문드립니다 ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F word && (word & mask) == word 의 의미
공유 소스 보기 (acmicpc.net)if문이 true인 경우는 (word 가 0이 아님 당연한거 아닌가?) (그리고 and &&) (word&mask==word 둘이 같음) 걸로 봤는데 이런 의미가 아닌가요? word && 이부분을 빼보니까 답이 제대로 안 나오긴 하네요 그러니까 질문은 word &&~ 이 부분이 무슨 의미인지 모르겠네요
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
헤드노드 정의
헤드노드 정의 할 때 pNext값에 NULL이라고 적지 않아도자동으로 NULL로 초기화가 되는 건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-L 해당 문제 조합으로 풀이 삭제하신 의도가 있으실까요?
큰돌님 안녕하세요?어쩌다보니 구형 / 신형 교안 섞여서 갖고 있는데구형교안에는 5-L이 bitmask와 combination 두개의 풀이가 있는것을 보았습니다.신형으로 넘어오면서 combination풀이는 삭제된 것을 알 수 있었는데, 어떤 의도가 있어서 삭제 하셨을거 같아서 문의 드립니다.답변 미리 감사합니다.수강자 드림.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
그래프이론 문제분류
큰돌님 안녕하세요!!다름이 아니라 2주차 문제중에 dfs, bfs를 이용하는것이 아닌구현, 그리디 문제도 존재하는데 의도가 있으셔서 중간에 추가를 하신건가요?? 문제를 풀다가 궁금해서 남겨봅니다!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 안배우는 경우의 코드
공유 소스 보기 (acmicpc.net)if (index != 'a'-'a' && index != 'n'-'a' && index != 't'-'a' && index != 'i'-'a' && index != 'c'-'a') { ret = max(ret, go(index+1, k, mask)); }ret=max(~)이게 무슨 의미인지 모르겠습니다 ㅠㅠ 어떤 재귀 구조인지 그림을 못 그리겠습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
인구 이동 문제
http://boj.kr/df8629bfbd4f4bd69ecbbb0fa031719a go 함수를 통해 서로 국경선을 공유하는 영역끼리 1로 표시하고 연결된 컴포넌트 문제로 만들기dfs 함수를 통해 영역별로 각각 접근하면서 A[r][c] 값 평균화 이 아이디어로 접근했는데 무엇이 잘못된건지 모르겠습니다..아예 틀린 생각인가요..??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-B 뒤집기 질문드립니다
1)뒤집었던 행을 열을 뒤집고 다시 뒤집는 걸 고려 할 필요가 없는 건가요?2)행을 뒤집고 열 뒤집기 열 뒤집고 행 뒤집기 순서 달라도 결과가 같나요?
-
해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
a.sort()관련 코드 질문
a = a[s-1:e]a.sort()대신 a = a[s-1:e].sort() 이렇게 작성하는 건 왜 안되는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B 정말 어디서 틀렸는지 모르겠습니다.
ㄴ왠만해서 질문 안하려 했는데 2시간째 이것만 잡고 있네요ㅠㅠ 소스 코드와 다 똑같은데 왜 왜왜!! 안나올까요 ㅠㅠ자꾸 질문해서 죄송합니다 ㅠㅠhttp://boj.kr/1d75a4aa31fc421a9f9e34fee47196b2
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
예제 테스트는 통과하는데 백준 통과를 못합니다..
안녕하세요 큰돌님, 3-C 번 문제를 풀고 샘플 테스트 까지 답을 맞추는데 왜 백준에만 들어가면 틀리다고 뜨는지 모르겠습니다.. https://www.acmicpc.net/submit/16234/69108881
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
스택문제 괄호
강사님 안녕하세요!! 이번에 기업 코딩테스트를 보게 되었는데 예상치 못한 문제가 나와 매우 당황했었습니다.... 제가 평소에 풀던 괄호 문제는 대괄호, 중괄호, 소괄호 순서 상관없이 제대로 여는 괄호, 닫는 괄호가 정확하게 되어있다면 문제를 풀 수 있었던 유형이었습니다. ex) { ( [ [ ] ] ) } <-이건 스택으로 풀면 len(stack)==0 이 나와 answer=YES 가 되는 식의 문제였는데.... 이번 코딩테스트에서는 세상에... 여는 괄호, 닫는 괄호가 정확히 되어있는 조건에 + 무조건 대괄호 , 중괄호, 소괄호 이 순서를 유지해야한다는 조건이 있었습니다. 한마디로 ex) { ( [ [ ] ] ) } <- 이건 중괄호가 제일 바깥에 있고 소괄호 안에 대괄호가 있으니 성립하지 않고 [ [ { { ( ) } } ] ] <- 이런 식으로 괄호가 유지되어야만 성립이 되는 문제라고 하더군요..... 결국 코딩테스트 탈락의 고배를 마시게 되었는데... 저 상황이라면 어떤식으로 접근을 해야하는 걸까요? 지원자들의 후기를 들어보니 해쉬 셋으로 풀면 된다고 했지만 그 코드를 어떻게 작성해야할지 몰라 매우 난감한 상황입니다..
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
선생님이 풀어주신 코드와 로직은 같은데 왜 채점은 타임에러 뜨는지 모르겠습니다.
선생님이 풀어주신 코드는 한번 더 확인하는 과정을 거쳐서 board의 수만큼 시간 복잡도가 그만큼 더 늘어나는 것 같아서 익지 않은 토마토의 개수를 세어서 그 수만큼 익으면 days를 반환하는 코드를 짰는데 왜 타임에러가 발생하는지 궁금합니다. 제가 놓치고 있는 부분이 무엇일까요?..package testSection8; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Point{ int x,y; Point(int x, int y){ this.x = x; this.y = y; } } public class Main{ static int n,m,days=0,total=0,cnt; static int[][] board; static int[] dx = {-1,0,1,0}; static int[] dy = {0,1,0,-1}; static Queue<Point> q = new LinkedList<>(); public int BFS(){ while (!q.isEmpty()){ days++; int size = q.size(); for(int i=0; i<size; i++){ Point point = q.poll(); for(int j=0; j<4; j++){ int nx = point.x+dx[j]; int ny = point.y+dy[j]; if(nx>=0 && nx<n && ny>=0 && ny<m && board[nx][ny] == 0){ if(++cnt == total) return days; board[nx][ny] = 1; q.offer(new Point(nx,ny)); } } } } return -1; } public static void main(String[] args) { MainT = new Main(); Scanner sc = new Scanner(System.in); m = sc.nextInt(); n = sc.nextInt(); board = new int[n][m]; for(int i=0; i<n; i++){ for (int j=0; j<m; j++){ board[i][j] = sc.nextInt(); if(board[i][j] == 1) q.offer(new Point(i,j)); else if(board[i][j] == 0) total++; } } System.out.println(T.BFS()); } }
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
와 이제 슬슬 어려워 지는것 같네요.
2차원 배열이라 이중 for문이 편해서 이중 for문으로 풀어 보았습니다.function solution(array) { let answer = []; let sum1 = Array.from({ length: array.length }, (v, i) => 0); let sum2 = Array.from({ length: array.length }, (v, i) => 0); let sum3 = 0; let sum4 = 0; for (let i = 0; i < array.length; i++) { for (let j = 0; j < array[i].length; j++) { sum1[i] += array[i][j]; sum2[i] += array[j][i]; if (i === j) sum3 += array[i][j]; if (i === array.length - 1 - j) sum4 += array[i][j]; } } const maxSum1 = sum1.sort((a, b) => b - a); const maxSum2 = sum2.sort((a, b) => b - a); answer.push(maxSum1[0]); answer.push(maxSum2[0]); answer.push(sum3); answer.push(sum4); return answer.sort((a, b) => b - a)[0]; } console.log( solution([ [10, 13, 10, 12, 15], [12, 39, 30, 23, 11], [11, 25, 50, 53, 15], [19, 27, 29, 37, 27], [19, 13, 30, 13, 19], ]) );코드 피드백 해주시면 정말 감사하고 아니여도 괜찮습니다!