묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Do it! 알고리즘 코딩테스트 with Python
17298 오큰수 구하기 질문있습니다.
올려주신 코드로 공부하고 백준에 업로드 해 본 결과 시간 초과가 뜨는데, 시간 초과가 되지 않게 하려면 어떻게 수정할 수 있을까요 ?
-
미해결IT 기업 취업을 위한: 코딩테스트 혼자서 정복하기 (C/C++)
배낭문제가 백준문제로 있어서 작성했는데 왜 안되는지 알 수 있을까요?
https://www.acmicpc.net/problem/12865 #include <iostream>#include <algorithm>using namespace std;int N, K;int W[101];int V[101];int DP[101][100001];int main(){ scanf("%d%d", &N, &K); for (int i = 1; i <= N; i++){ scanf("%d %d", &W[i], &V[i]); } for (int i = 1; i <= N; i++) { for (int j = 1; j <= K; j++) { if (j < W[i]) { DP[i][j] = DP[i-1][j]; } else DP[i][j] = max(DP[i-1][j],DP[i-1][j-W[i]]-V[i]); } } printf("%d", DP[N][K]);} 안녕하세요? 정올 문제로 배낭문제 수강하고 똑같이 있는 백준문제를 발견하고 작성한 코드인데 채점을 하면 틀렸다고 뜹니다. 혹시 이유를 알 수 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 코드 질문있습니다
안녕하십니까 큰돌님해당 문제를 bfs로 풀었는데 효율적인지 궁금합니다 !http://boj.kr/efabd95dc54b4536956d2e87d8f80d04
-
미해결자바 코딩테스트 - it 대기업 유제
혹시 이 문제가 문자를 지우거나 추가헤서 라고 출제된다면 어떻게 풀어야할까요 ?
소문자로 이루어진 문자열이 주어지면 해당 문자열의 문자를 지우거나 추가하여 모든 문자의 빈도수가 서 로 다르게 만들려고 합니다. 만약 주어진 문자열이 매개변수 s에 문자열이 주어지면 s의 모든 문자의 빈도수가 서로 다르도록 하기 위해 지우거나 추가해야 할 최소 개수를 반환하는 프로그램을 작성하세요. 만약 문제가 이렇게 나오다면 어떤 방법으로 풀어야할까요 ..? 생각해봤는데 방법이 안 떠올라서 질문 드려봅니다 .. 이런 문제는 없으려나용 ,,
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
[이진 탐색 실전 문제] 원하는 정수 찾기 편 질문
안녕하세요? 강의를 듣다가 궁금한 것이 생겨 질문 드립니다.자바의 정렬 기본 알고리즘 시간 복잡도와 이진 탐색 시간 복잡도가 nlogn인 건 이해했는데, 코드부를 보면 이중 반복문이 나오고 있습니다.앞 서 강의에서 반복문을 기준으로 이중 반복문이면 n의2승이라고 말씀하셨는데, 이 중 반복문을 썼는데도 nlogn이 되는 건 반복문이 진행되는 동안 절반씩 찾기 때문인가요??만약 이중 반복문으로 시간 복잡도가 올라간다면 이중 반복문을 쓰지 않고, 해결하는 방법을 알려주실 수 있으실까요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문이 있어서 남겨봅니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.function solution(arr) { let answer = 0; let dx = [-1, 0, 1, 0]; let dy = [0, -1, 0, 1]; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length; j++) { console.log(arr[i][j]); for (let k = 0; k < 4; k++) { let nx = i + dx[k]; let ny = j + dy[k]; if ( nx >= 0 && nx < arr.length && ny < arr.length && ny >= 0 && arr[i][j] > arr[nx][ny] ) { answer++; } } } } return answer; }알려주신 것처럼 flag 변수로 아닌 것을 찾아서 숫자를 늘려주는 것과 맞는 경우에 늘려주는 것이 어떤 차이가 있는건지 헷갈리네요...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[2_J,맞왜틀] string과 누적합 이용해서 풀었는데 왜 틀렸는지 모르겠어요
http://boj.kr/24491eb2d8374e2992ee95757882a6ce안녕하세요 큰돌쌤 2_J문제에서 왜 맞왜틀인지 잘 모르겠어서 질문드립니다. 저는 다음과 같이 코드를 짰습니다.h번 만큼 문자열 s를 입력받고 go함수 호출go 함수에서문자열 s의 요소가 'c'일때 s의 다음 요소도 'c'가 아니면 전 요소+1을 대입 ( s[i+1]=s[i]+1 )요소가 'c'보다 크다면 (99보다 크다면) 누적합 psum 을 +1하고 ret에 대입요소가 'c'도 아니고 'c'보다 크지 않다면 ret에 -1대입문자열 ret을 string 배열에 담아 출력
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
문제 2-S -> vector[]가 이해가 안되요..
실은 제가 파이썬으로 구현을 해보려고 해서 질문을 남겨요.vector<int> v[10001];v[b].push_back(a);이게 2D array라고 생각하면 될까요..문제의 자료를 담으려면 수도 코드로[b : [a1, a2, a3], b2 : [a1, a2, a3]] 이렇게 들어가는게 맞을텐데 , 그럼 위에서 vector<int> v[10001]; 으로 선언한 부분이 각 b (신뢰받는 컴퓨터) 에 대해서 여러 a 들(신뢰하는 컴퓨터)를 담는 위 수도 코드를 구현할 수 있는 자료구조형인걸까요?교안을 찾아봐도 모두 vector<int> v; 로만 선언되어서 1-d array로만 나오는 것 같어서 위 구조 v[10001] 를2-d array로 봐도 되는지 궁금합니다.
-
미해결자바 코딩테스트 - it 대기업 유제
피부과 질문드립니다.
기존의 조건문 코드인if(pos < n && t == inList[pos][0]){ if(Q.isEmpty() && t > fT) fT= t; Q.offer(inList[pos][1]); pos++; }이 부분을while(pos<n && list[pos][0]==t) { if(q.isEmpty() && t>ft) ft = t; q.offer(list[pos][1]); pos++; }이처럼 반복문으로 코드구현해도 되나요??답은 맞게 나옵니다.
-
미해결자바 코딩테스트 - it 대기업 유제
바둑대회 질문드립니다.
이처럼 코드를 작성했는데 마지막 테스트 케이스 답이 0이 나옵니다. 어디가 잘못된건지 모르겠습니다. import java.util.*; import javax.security.auth.Subject; import java.awt.List; import java.io.*; class Main { public static int n,answer=10000000; public static boolean[] visit; public int solution(int[][] cans){ n=cans.length; visit = new boolean[n]; dfs(0,0,cans); return answer; } public static void dfs(int L, int s, int[][] cans) { if(L==n/2) { ArrayList<Integer> a =new ArrayList<>(); ArrayList<Integer> b =new ArrayList<>(); for(int i=0; i<n; i++) { if(visit[i]) a.add(i); else b.add(i); } int sum1=0,sum2=0; for(int i=0; i<L; i++) { sum1+=cans[a.get(i)][0]; sum2+=cans[b.get(i)][1]; } answer = Math.min(answer, Math.abs(sum1-sum2)); } else { for(int i=s; i<n; i++) { visit[i] = true; dfs(L+1, i+1, cans); visit[i] = false; } } } public static void main(String[] args){ Main T = new Main(); System.out.println(T.solution(new int[][]{{87, 84}, {66, 78}, {94, 94}, {93, 87}, {72, 92}, {78, 63}})); System.out.println(T.solution(new int[][]{{10, 20}, {15, 25}, {35, 23}, {55, 20}})); System.out.println(T.solution(new int[][]{{11, 27}, {16, 21}, {35, 21}, {52, 21}, {25, 33},{25, 32}, {37, 59}, {33, 47}})); } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-I 문제 질문
http://boj.kr/7afbddf128d14ddaba6a0ad686d5816c안녕하세요 선생님, 제가 구현 시 atoi 를 생각하지 못해서 string to int 를 따로 구현 해봤습니다.예제 코드는 다 동작하고 다른 것들도 다 동작이 되는데 반례를 찾지 못하겠습니다. 틀렸다고 뜨네요..어떤 점이 잘못되었는지 알려주시면 감사하겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
종화 방귀 문제
제가 문제를 처음에 종화가 방귀를 꼈을 때 종화를 기준으로 상하좌우 한 칸 씩만 오염된다로 이해했는데 그런 것이 아니라 방귀를 끼는 순간 종화의 좌표를 기준으로 연결된 육지(숫자 1)들은 전부 바다(숫자 0)으로 변한다는 문제인거죠??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2주차 #4-2 재귀적으로 코드짜기
http://boj.kr/7226630a963848e3bdc6a61318877151짠 코드가 적절한가요?적절하다면 재귀함수는 기저사례가 필요하다고 했는데 제가 짠 코드에서 기저사례는 어디에 있나요?틀렸다면 어디를 어떻게 고치는게 좋을지 알려주셨으면 좋겠습니다.감사합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-V 질문입니다.
안녕하세요 큰돌님!기존 답안과 차이점은 조건에 해당하는 재귀함수만 호출하는 대신, 함수 시작(line13) 에서 시간을 검사하여, 배제한다~~!! 할 수 있도록 하였는데요...왜 틀린 답안인지... 가르침 부탁드립니다 ㅎㅎhttp://boj.kr/a97107fe0c2d4574a2b852b398a10ecd감사합니다.- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이중 for문을 돌아야 하는 정확한 이유가 있을까요?
function solution(arr){ let copy = arr.slice().sort((a, b) => b - a); return copy.map(it => arr.indexOf(it) + 1) } let arr=[87, 89, 92, 100, 76]; console.log(solution(arr)); 제가 코테공부는 거의 안해서 잘 모르는데 시간복잡도가 연관이 있을것 같습니다 2중 for문을 돌아야 하는 이유가 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 참조 에러
안녕하세요 항상 강의 잘 보고있습니다.!궁금한 점이 있는데, go() 함수 부분에서while(true){if(ret.size() && ret.front() == '0')}참조 에러에 안걸리게 ret.size()를 꼭 적어야 한다고 말씀하셨는데, 제가 생각할땐 ret.front() == '0' 자체가 size가 1 이상이라는 것도 포함되니까 ret.size()를 적어야하는 이유를 잘 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-x
강의를 3-4번을 봐도 이해가 안되는 부분이 있어서 질문드립니다.어떻게 2구간의 물이 3으로 맞춰 질수가 있나요...문제 예시를 보면,높이 4와 높이 1의 구명을 통해 바깥으로 물이 빠지고높이 3의 구멍으로 물이 들어와서 다시 높이 1의 구멍으로 바깥으로 물이나갈텐데 ... 2개의 높이가.. 3으로 어떻게 맞춰질수가.. 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[8 - N] 질문입니다.
안녕하세요 선생님, 답지에서 모르는 부분이 생겨 질문을 드립니다. https://www.acmicpc.net/source/share/0a4fdcae351643db83359907f8b3da8518라인에서 if (dist[here] != here_dist)continue; 가 의미하는 바를 정확히 모르겠습니다. 현재 이해한 것은 아래와 같습니다. here_dist : 이전에 갱신되어 pq에 추가된 값dist[here] : 이후에 갱신되어 수정된 값기존 거리보다 새로운 거리가 짧을 때만 dist 갱신 및 pq에 추가 작업이 일어나므로 dist에 저장된 값과 here_dist 값이 다르다는 것은 이후에 갱신 된 값이 더 작기 때문에 here_dist값이 마지막에 갱신된 dist[here]과 다른 값일 경우 가장 작은 값이 아니므로 현재 노드로 선택될 자격을 잃어버려 continue로 다음 후보 노드로 이동하게 된다.이런식으로 현재 노드로 선택하지 않고 이동시키는 코드가 맞을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
11. 임시반장정하기 질문 있습니다.
아래의 3중 for문에 print문을 넣어서 실행해보면 자기자신과 같은 경우도 포함되어 if문에 들어가게 되는데, 그렇게 해서 count에 1이 더해지는 것은 잘못된 로직 아닌가요? 그렇다면 3중 for문 안의 if문 조건에 i != j 를 포함시켜야 맞지 않을까요? public int solution(int n, int[][] arr) { int answer = 0; int max = Integer.MIN_VALUE; for (int i = 1; i <= n; i++) { // i번 학생 int count = 0; for (int j = 1; j <= n; j++) { // j번 학생 for (int k = 1; k <= 5; k++) { // k : 학년 if (arr[i][k] == arr[j][k]) { System.out.println("arr[" + i + "][" + k + "] = " + arr[i][k] + " / arr[" + j + "][" + k + "] = " + arr[j][k]); count++; System.out.println("count : " + count); System.out.println(); break; } } } if (count > max) { max = count; answer = i; } } return answer; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 맞왜틀 10709
안녕하세요 예제 TC는 다 맞는데 틀리다고 나오네요..제가 생각한 풀이 방식은 탐색을 하다 구름이 아닌 경우 인덱스를 하나씩 줄이면서 구름의 위치를 찾는 식으로 풀어봤습니다.http://boj.kr/154ed80b9b0843e99513073decc1482b