묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 오답 관련 질문입니다. (to_string 사용 시)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의 잘 듣고 있습니다!!해당 문제를 푸는데, 이해가 되지 않는 현상이 있어 질문드려요 비트마스킹으로 조합을 획득하여 이를 다시 순번으로 복원하는 과정에서 ret += to_string(j+1); 로 하니 오답이 발생했습니다.무엇이 문제일지 전혀 감을 못잡다가..,ret += (char(j+1) +'0'); 으로 해주니 정답 처리가 되었는데요 그 이유가 무엇일지 궁금합니다.감사합니다. 전체 코드 >> #include <bits/stdc++.h> using namespace std; int N; int mp, mf, ms, mv; vector<vector<int>> m; int main() { cin >> N; cin >> mp >> mf >> ms >> mv; m = vector<vector<int>>(N, vector<int>(5, 0)); for (int i = 0; i < N; ++i) { for (int j = 0; j < 5; ++j) { cin >> m[i][j]; } } /* 0000000: 0 0000001: 1 0000010: 2 0000011: 3 ... */ int min_C = 500 * 200; vector<string> ans; for (int i = 0; i < (1 << N); ++i) { int sum_p = 0, sum_f = 0, sum_s = 0, sum_v = 0, sum_c = 0; for (int j = 0; j < N; ++j) { // 비트 마스킹을 통한 조합 combination 획득 if (i & (1 << j)) { sum_p += m[j][0]; sum_f += m[j][1]; sum_s += m[j][2]; sum_v += m[j][3]; sum_c += m[j][4]; } } if (sum_p >= mp && sum_f >= mf && sum_s >= ms && sum_v >= mv) { if (min_C > sum_c) { min_C = sum_c; string ret = ""; for (int j = 0; j < N; ++j) { if (i & (1 << j)) { // ret += to_string(j+1); << 오답 ret += (char(j + 1) + '0'); // << 이렇게 해주니 비로소 정답 } } ans = {ret}; } else if (min_C == sum_c) { string ret = ""; for (int j = 0; j < N; ++j) { if (i & (1 << j)) { // ret += to_string(j+1); << 오답 ret += (char(j + 1) + '0'); // << 이렇게 해주니 비로소 정답 } } ans.push_back(ret); } } } if (ans.empty()) cout << -1; else { cout << min_C << "\n"; sort(ans.begin(), ans.end()); for (char s : ans[0]) { cout << int(s - '0') << " "; } } return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-M 질문 드립니다!
스택 말고 vector를 이용해서 이렇게 풀었는데 꼭 스택을 사용 해야 하는 건가요??#include <iostream> #include <vector> using namespace std; int n; int cnt = 0; int main() { cin >> n; for (int i = 0; i < n; i++) { string s; cin >> s; vector<char> arr; for (int j = 0; j < s.length(); j++) { if (arr.empty() || arr.back() != s[j]) { arr.push_back(s[j]); } else { arr.pop_back(); } } if (arr.empty()) cnt++; } cout << cnt; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1주차 개념#7에서 재귀함수의 시간복잡도를 구할 때 메인 로직은 어떤 기준으로 결정하는건가요?
안녕하세요.재귀함수의 시간복잡도를 구할 때 (메인로직)*(함수호출횟수)라고 알려주셨는데, 여기에서 메인 로직은 어떤 기준으로 결정되는건가요?감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
반례를 못찾겠습니다.
http://boj.kr/7b036ef3742940cd860da4b66f630c0b 이론에서 배웠던 코드를 이용해서 구현했는데 어디서 틀렸는지 못찾겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
문제를 풀다가 정수 관련하여 질문이 생겼어요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. cin >> N >> K; queue<int> q; q.push(N); // visited[N] += 1; NK = K + 1; cout << K << N;이렇게 하면 -1 -1을 입력했을 때 -1 -1이 잘 출력되는데 주석을 지우고 실행하면 0 -1이 출력되는 현상이 발생합니다.. #include <bits/stdc++.h> using namespace std; int N, K, visited[500004], prevN, searchTime = 0, flag = 0; int NK = 0; int main() { cin >> N >> K; queue<int> q; q.push(N); // visited[N] += 1; NK = K + 1; cout << K << N; }
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
백준 2178 미로탐색 질문 입니다.
안녕하세요.. 질문부터 말씀드리면,중첩 for문을 돌면서 입력값을 받을때, i는 y축, j는 x 축으로 알고있는데 bfs 호출 후 상하좌우 탐색 시, now의 0번째 값을 왜 x로 보시는지 알고싶습니다.. y가 아닌지... 짧은 지식으로 생각할때는 그런거 같아서요 ㅎㅎ 모든 2차원배열[][]은 y, x가 아닌건가요? ㅠㅠ 맨붕오네요 ㅋ
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
배열리스트 문제 5번 <중복 제거> 질문입니다.
안녕하세요!~배열리스트 문제 5번 <중복 제거> 질문입니다.for i in range(1, len(nums)): 이후 조건문에서선생님께서 알려주신 직전항과의 값이 같은지 비교하는거 말고,if nums[i] not in answer:answer.appendleft(nums[i]) 이런식으로 코드를 작성하게 되면 시간 효율에서 문제가 생기게 될까요? 아무래도 nums 크기마다 한 번씩 answer 전체를 탐색해야해서 효율이 더 떨어질 것 같긴한데 궁금해서 질문드려봅니다! 감사합니다.
-
미해결자바 코딩테스트 - it 대기업 유제
바둑대회 질문입니당
안녕하세요! 강의 잘 듣고있습니다! 바둑대회 문제 관련해서 제가 풀어낸 방식은 흑돌팀과 백돌팀 각각 인원을 세어주는 배열과 팀능력치를 계산하는 배열 두 개를 선언하고, 깊이가 다 다랐을 때 정답을 계속해서 초기화하는 방식을 사용했습니다. 예제 코드에서는 문제가 따로 생기진 않았는데 혹시 이런 방식의 풀이도 다른 문제를 접근하는게 큰 문제가 없을지 그리고 다른 입력에도 문제가 없을지 궁금합니다.package DFS; package DFS; import java.util.*; public class 바둑대회 { } class Solution6 { static int[] sum; static int[] teamCount; static int[][] cansArr; static int minNumber; static ArrayList<Integer>[] list; public static int solution(int[][] cans){ int answer; sum = new int[2]; teamCount = new int[2]; cansArr = cans; minNumber = Integer.MAX_VALUE; list = new ArrayList[2]; for (int i = 0; i < list.length; i++) { list[i] = new ArrayList<>(); } DFS(0); answer = minNumber; return answer; } public static void DFS(int lv){ if(lv == cansArr.length){ if(Math.abs(sum[0] - sum[1]) < minNumber){ minNumber = Math.abs(sum[0] - sum[1]); } return; } for (int i = 0; i < 2; i++){ if( teamCount[i] < cansArr.length/2 ){ sum[i] += cansArr[lv][i]; teamCount[i]++; DFS(lv+1); sum[i] -= cansArr[lv][i]; teamCount[i]--; } } } public static void main(String[] args){ Solution6 T = new Solution6(); 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++ 코딩테스트 | 알고리즘 코딩테스트
6-I 지문 문제
http://boj.kr/ea0856e69f854bb9afee8490ed73794d 코드의 질문은 아닙니다.. 지문의 (하지만 하나의 파닭에는 하나 이상의 파가 들어가면 안 된다.) 라는 부분을 읽고 파는 무조건 나뉘어져야 한다. 라고 생각하고 조건을if(temp>mid)으로 달았었거든요 어디서 틀렸나 강의 봤는데if(temp>=mid) 였더라구요이렇게 되면 파를 통째로 사용하게 되는 경우도 생겨 오답인 것이 아닌가요?코드 질문은 아니여서 올릴까 말까 하다가.. 찜찜해서 질문드립니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-A 치킨 배달 시간초과 관련 질문 입니다!
http://boj.kr/5b5feb84a65f44c19188df5fbe697fe6선생님의 풀이와 크게 다르지 않은거 같은데 어디서 시간초과가 나는지 잘모르겠습니다...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-Q 질문있습니다
http://boj.kr/0cfb08048b9141b798f199cfd9993367굉장히 직관적으로 풀었는데,치즈가 남아있는지 체크남아있다면, 치즈의 가장자리 녹이기 (반시계방향으로)남아있는 치즈의 덩이 (연결요소 개수) 개수 구하고 또 녹이기. 형식으로 구현했습니다..테스트 케이스는 어찌저찌 맞은듯 한데 어디에 문제가 있는 코드일까요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J [14497:주난의 난] 질문 있습니다.
큰돌님 안녕하세요? 항상 강의 잘 보고 있습니다. http://boj.kr/b8636c720918477b86a00858b5a8929a위의 제 코드를 채점했을 때 96%에서 "틀렸습니다"로 채점됩니다.반례가 도저히 생각나지 않아 큰돌님께 여쭤보고 싶어서 질문글을 작성하게 되었습니다. 항상 감사드립니다 !
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
구간합구하기1 (백준11659)
선생님이 강의하시는데로 코드쳤는데 마지막 샘플예시처럼5 5 입력하면 => 1 이 나와야하는데 -14 가 나와버리네요코드가 동일한데 왜 결과가 다를까요 ㅠ이래는 작성한 코드입니다 public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine()); int suNo = Integer.parseInt(stringTokenizer.nextToken());// 숫자의 개수 int quizNo = Integer.parseInt(stringTokenizer.nextToken());//질의개수 long [] s = new long[suNo+1]; //합배열 선언 stringTokenizer = new StringTokenizer(bufferedReader.readLine()); //한줄로 쭉 받아올때 stringTokenizer 사용 for(int i=1; i<=suNo; i++){ s[i] = s[i-1]+Integer.parseInt(stringTokenizer.nextToken()); } for(int i=0 ; i<s.length;i++) { System.out.print("s:"+s[i]+" "); } for(int q=0; q<quizNo; q++){ stringTokenizer = new StringTokenizer(bufferedReader.readLine()); int i = Integer.parseInt(stringTokenizer.nextToken()); int j = Integer.parseInt(stringTokenizer.nextToken()); System.out.println(s[j] - s[i-1]); } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-L 질문있습니다.
http://boj.kr/a0d2f4d95b384de39d9b01503b89f68c 강의 풀이같은 경우엔, 골이 들어간 시점마다 승부를 비교해 누적해주는 식으로 구현하셨는데,저는 무승부가 된 시점에, 그 시점에서 이전 골 기록을 빼고 누적해주는 식으로 구현했습니다.. 테스트는 통과하는데 제출시 오답입니다.어떤 반례가 있는지 못 찾겠습니다 ㅠ 제 코드는 왜 틀린걸까요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런식으로 풀어도 괜찮을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.function solution(n, arr) { let answer = 'NO'; let ch = Array.from({ length: n }, () => 0); function DFS(v) { if (v === n - 1) { let aSum = 0; let bSum = 0; for (let j = 0; j < n; j++) { if (ch[j]) aSum += arr[j] //0이면 else bSum += arr[j] //1이면 } if (aSum === bSum) return answer = 'YES' } else { ch[v] = 1; DFS(v + 1) ch[v] = 0 DFS(v + 1) } } DFS(0); return answer } console.log('answer', solution(6, [1, 3, 5, 6, 7, 10]))
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 정말 모르겠습니다 ㅠㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/ea14b76bba984f7d95c8c9a8ba109d94선생님 ㅠㅠㅠ 이게 도대체 왜 안되는건지 잘 모르겠습니다...
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
삽입정렬로 생각이 안나서 다르게 풀어봤습니다.
삽입 정렬로 혼자 풀어보려고 했는데 도무지 생각이 안나서 버블정렬? 로 푼것 같습니다사실 버블정렬도 아닌것 같긴한데혹시 이렇게 풀면 너무 비효율적이거나 반례가 있을까요?function solution(s, arr) { let answer = new Array(s).fill(0); answer[0] = arr[0]; for (let i = 1; i < arr.length; i++) { if (answer.includes(arr[i])) { for (let j = s - 1; j > 0; j--) { if (answer[j] === arr[i]) { [answer[j], answer[j - 1]] = [answer[j - 1], answer[j]]; } } } else { answer.pop(); answer.unshift(arr[i]); } } return answer; }
-
해결됨글로벌 개발자로 성장하는 < 코딩 실무 영어 /> 마스터 클래스
8:10 compile 질문입니다.
that be compiled 가 맞는거 아닌가요? 타입스크립트가 컴파일되면(수동태) plain Javascript로 결과물이 나오는...?
-
미해결알고리즘 코딩테스트 문제풀이 with JAVA & 파이썬 (난이도 - 브론즈 3)
DAY11 영상에 오타있네요
최댓값 문제 2566번인데 2556번(별 찍기 - 14)로 숫자가 잘못되어있습니다.수정 부탁드립니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
미로탐색 코드 질문있습니다.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; class Main { static int n = 7; static int[][] map; static int count = 0; static int[] dx = {-1, 0, 1, 0}; static int[] dy = {0, -1, 0, 1}; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); map = new int[n][n]; for (int x = 0; x < n; x++) { StringTokenizer st = new StringTokenizer(br.readLine()); for (int y = 0; y < n; y++) { map[x][y] = Integer.parseInt(st.nextToken()); } } dfs(0, 0); System.out.println(count); } public static void dfs(int x, int y) { if (x == n - 1 && y == n - 1) { count++; } else { for (int i = 0; i < 4; i++) { int d_x = dx[i] + x; int d_y = dy[i] + y; if (d_x >= 0 && d_x <= n - 1 && d_y >= 0 && d_y <= n - 1 && map[d_x][d_y] == 0) { map[d_x][d_y] = 1; dfs(d_x, d_y); map[d_x][d_y] = 0; } } } } }저와 같은 경우는 1부터 시작하지 않고 0부터 시작해서 n전까지를 구해서 진행했는데 인덱스 차이만 있는데 답은 두배씩 나오는지 모르겠습니다.정답이 8이라고 하면 16으로 나오더라구요. 인덱스를 하나씩 빼줘서 했을 뿐인데 어디가 문제인지 못찾겠네요ㅠ 아니면 놓친부분이 어디에 있는지 모르겠습니다ㅠ