묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
89번 토마토 문제 질문있습니다.
안녕하세요 선생님 코드 32번째 줄 부터 if (map[xx][yy] == 0) { if (xx <= n && xx >= 1 && yy <= m && yy >= 1)}이렇게 구현하신지 이유를 알고 싶습니다. 왜냐하면 if (map[xx][yy] == 0 && xx <= n && xx >= 1 && yy <= m && yy >= 1)} 도 맞지 않나 생각이 들어서요 혹시 차이점이 있다면 답변 부탁드립니다.감사합니다.
-
미해결자바 코딩테스트 - it 대기업 유제
바둑대회 질문드립니다.
import java.util.*; import javax.security.auth.Subject; import java.awt.List; import java.io.*; class Main { public static boolean[] visit; public static int len,answer=Integer.MAX_VALUE; public int solution(int[][] cans){ len=cans.length; visit =new boolean[len]; dfs(0,0,cans); return answer; } public static void dfs(int L,int s,int[][] cans) { if(L==len/2) { ArrayList<Integer> a = new ArrayList<>(); ArrayList<Integer> b = new ArrayList<>(); for(int i=0; i<len; 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<len; 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}})); } }이렇게 작성했는데 마지막 테스트 케이스가 1이 아닌 0이 나옵니다. 어디가 잘못된건지 모르겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[2_R맞왜틀] ret을 전역변수로 선언하면 왜 틀릴까요?
http://boj.kr/db85dc94cd0c466aafbedb24affa6259 안녕하세요 선생님 도움 많이 받고 있습니다 항상 감사드려요. 다시 복습하면서 문제를 풀어보는데 ret을 전역변수로 선언하고 dfs함수를 ret을 계산하는 용도로만 사용하면 틀리더라구요 왜 그런지 잘 모르겠어요. 한번 봐주시면 좋겠습니다. 감사합니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
입출력 싱크 질문
안녕하세요! 알고리즘 교안 169P에서 입출력 싱크에 대한 설명을 읽고, 궁금증이 생겨서 질문 남깁니다!"cin과 cout은 c 라이브러리인 stdio의 버퍼와 동기화하느라 시간을 소비하기 때문이죠"라는 설명이 cin과 cout이 C에서 사용하는 스트림의 버퍼를 사용한다는 뜻으로 이해하면 되나요?https://modoocode.com/281이 게시글에서는 동기화가 될 경우, C++ 스트림의 버퍼를 사용하지 않고, C 스트림의 버퍼를 사용한다고 나와있길래 그렇게 이해하였습니다.동기화라는 것이 특정 자원에 동시에 접근함으로써 데이터가 불일치하게 되는 문제를 막기 위해 프로세스의 순서를 정하는 것으로 알고 있는데, 이것을 교안에서 언급한 동기화 개념과 어떻게 연결지어야 할지 잘 모르겠습니다!ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
승철이의 문단속 코드 질문있습니다
안녕하십니까 큰돌님소수 판별하는 check 함수의 for 문에서for (int i = 2; i * i <= n; i++) 조건식 i * i <= n 의 의미를 잘 모르겠습니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
스택이 멀티쓰레드에 안전하지 않은걸까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요. 강의 잘 듣고 있습니다.문제와 관련 없긴 한데, 궁금해서 질문 드립니다.동일한 코드의 메서드 solution1, solution2를 main 메서드에서 순차적으로 실행했을 때 결과값이 다른데, 스택이 멀티쓰레드에 안전하지 않아서 발생하는 문제일까요?하나씩 실행하면 올바른 정답이 나옵니다. package 스택; import java.util.Scanner; import java.util.Stack; public class _03_크레인인형뽑기 { public int solution1(int[][] board, int[] moves) { int answer = 0; Stack<Integer> stack = new Stack<>(); for (int pos : moves) { for (int i = 0; i < board.length; i++) { if (board[i][pos - 1] != 0) { int tmp = board[i][pos - 1]; board[i][pos - 1] = 0; if (!stack.isEmpty() && (stack.peek() == tmp)) { stack.pop(); answer += 2; } else { stack.push(tmp); } break; } } } return answer; } public int solution2(int[][] board, int[] moves) { int answer = 0; Stack<Integer> stack = new Stack<>(); // 1. 크레인 위치에 해당하는 인형을 찾는다. (밑으로 행을 이동하면서 인형 찾기) for (int pos : moves) { for (int i = 0; i < board.length; i++) { // 2. 비어 있지 않은 인형 캐치 (배열의 index는 0부터 시작하기 때문에 -1) if (board[i][pos - 1] != 0) { // 인형 꺼냄 int tmp = board[i][pos - 1]; // board의 인형은 비어줌 board[i][pos - 1] = 0; // 바구니에 겹치는게 있으면 모두 꺼냄 if (!stack.isEmpty() && (stack.peek() == tmp)) { stack.pop(); answer += 2; } else { // 아니면 바구니에 인형 담기 stack.push(tmp); } // 다음 위치로 이동 break; } } } return answer; } public static void main(String[] args) { _03_크레인인형뽑기 t = new _03_크레인인형뽑기(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] board = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { board[i][j] = sc.nextInt(); } } int m = sc.nextInt(); int[] moves = new int[m]; for (int i = 0; i < m; i++) { moves[i] = sc.nextInt(); } System.out.println("1번 : " + t.solution1(board, moves)); System.out.println("2번 : " + t.solution2(board, moves)); } }결과값 5 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 8 1 5 3 5 1 2 1 4 1번 : 4 2번 : 0
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 맞왜틀 질문있습니다!
http://boj.kr/b4b633fb25634805a58a4d335d3e209b제가 작성한 코드입니다. 해설에있는 방법과는 다르게 코드를 짰지만 제가 작성한코드도 예제 입력시 모두 정답이 나오는데 제출을 하면 틀렸다고 합니다. 반례를 찾으려고 오래 붙잡고있었는데 도저히 생각이 안나요ㅜㅜ 도와주세요!! 항상 강의와 유튜브 잘 보고 있습니다! 감사합니다!
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 9. 미로탐색(BFS)(질문)
선생님 안녕하세요 ~ 미로탐색(DFS) 문제를 BFS로 풀어보고 싶은데 어떻게 풀어줘야 문제가해결 될까요?? 지나온 길을 체크한 후 BFS에서는 체크를 어떻게 풀어줘야할지 모르겠습니다.. function solution(arr) { let answer = 0; let n = arr.length - 1; let nx = [-1, 0, 1, 0]; let ny = [0, 1, 0, -1]; let queue = []; queue.push([0, 0]); while (queue.length) { let [x, y] = queue.shift(); for (let k = 0; k < 4; k++) { let dx = x + nx[k]; let dy = y + ny[k]; if (dx === n && dy === n) answer++; if (dx >= 0 && dx <= n && dy >= 0 && dy <= n && arr[dx][dy] === 0) { arr[x][y] = 1; queue.push([dx, dy]); } } } return answer; }
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
라이브러리를 활용해서 문제풀이
안녕하세요 선생님!프로그래머스에서 코딩 기초 트레이닝 0단계를 모두 풀고나서 수강 중인 학생입니다.제가 문제를 풀고나서 강의를 보고 코드를 비교하면서 리뷰도 진행하면서 느낀 의문이 있습니다.저는 프로그래머스에서 algorithm과 같은 라이브러리를 활용해서 문제를 많이 풀었는데 선생님 강의에서는 그 라이브러리의 원리를 풀어서 푸는 문제가 많더라구요!모든 코딩에는 정답이 없겠지만 코딩테스트에서 활용해도 무방한지 궁금합니다 ㅎㅎ
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
2-6)런타임에러 질문입니다.
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class Main { public String solution(String[] arr) { String answer= ""; ArrayList<Integer> newlist = new ArrayList<>(); for(int i=0; i<arr.length; i++) { StringBuffer sb = new StringBuffer(arr[i]); newlist.add(Integer.parseInt(sb.reverse().toString())); } for(int i=0; i<newlist.size(); i++) { if((int)newlist.get(i)==1) { newlist.remove(i); } } for(int i=0; i<newlist.size(); i++) { for(int j=2; j<newlist.get(i); j++) { if(newlist.get(i)%j==0) { newlist.remove(i); } } } for(int i=0; i<newlist.size(); i++) { answer += newlist.get(i)+ " "; } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb=new Scanner(System.in); int N = kb.nextInt(); String[] arr = new String[N]; for(int i=0; i<N; i++) { arr[i] = kb.next(); } System.out.println(T.solution(arr)); return ; } } 맨 처음에 string[]배열로 입력값을 받은후stringbuffer을 이용해서 뒤집고, Integer.parseInt하면 0이 제거 되는 숫자화가 됩니다.그 이후에 arraylist에 순서대로 담아서, 소수가 아니면 제거하는 방식으로 풀었는데런타임에러가 나는 이유를 모르겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 테스트 케이스 질문있습니다
안녕하십니까 큰돌님강의 보기 전에 코드 작성했는데 저는 지울 노드가 주워졌을 때 진짜 없애는 코드를 작성했었는데 틀렸더라구요. 어디가 틀렸을까요 ??http://boj.kr/7a0241561d4f4fcc9c6a10d8f190da42 +커뮤니티에서 반례를 찾았습니다21 -11답 : 0 / 제 코드 : 1추가로 궁금한게 저 반례의 경우 그림이 어떻게 되는 건지 모르겠습니다 + 그리고 다른 질문 중에서 ""트리가(루트노드가) 단 하나만 존재해야 하는데 문제에서는 트리가 반드시 하나만 존재한다는 설명이 안보인다3-1 -1 -11답 : 2"" 라는 질문이 있는데 만약에 저렇게 주어졌을 때 저는 답이 3이라고 생각하는데 2인 건가요 ?? 저 상황에서의 그림 또한 궁금합니다
-
미해결코딩테스트 [ ALL IN ONE ]
디스코드 초대장이 만료되었다고 합니다.
디스코드 방이 안들어가집니다.링크를 타고 들어가면 초대장이 만료되었다고 나와요
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
32 선택정렬관련 질문
#include <iostream>using namespace std;int main(){ freopen("input.txt","rt",stdin); int a[100],n,i,j,tmp=0; cin>>n; for(i=0;i<n;i++){ cin>>a[i]; } for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(a[i]<a[j]){ tmp=a[i]; a[i]=a[j]; a[j]=tmp; } } } for(i=0;i<n;i++){ cout<<a[i]; } return 0;}선생님, 선택정렬 짤 떄 혹시 이렇게 해도 상관없는건가요...?
-
미해결자바 코딩테스트 - it 대기업 유제
알파코드 질문드립니다.
이렇게 작성하니까 오류가 나는데 뭐가 잘못된건지 모르겠습니다.import java.util.*; import javax.security.auth.Subject; import java.awt.List; import java.io.*; class Main { public static int[]dy; public int solution(String s){ int answer = 0; dy = new int[101]; answer = dfs(0,s); return answer; } public static int dfs(int s, String str) { if(dy[s]>0) return dy[s]; if(str.charAt(s)=='0' && s<str.length()) return 0; if(s==str.length() || s==str.length()-1) return 1; else { int res = dfs(s+1, str); int num = Integer.parseInt(str.substring(s,s+2)); if(num<=26) res+=dfs(s+2, str); return dy[s] = res; } } public static void main(String[] args){ Main T = new Main(); System.out.println(T.solution("25114")); System.out.println(T.solution("23251232")); System.out.println(T.solution("21020132")); System.out.println(T.solution("21350")); System.out.println(T.solution("120225")); System.out.println(T.solution("232012521")); } }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 문제 질문
안녕하세요 선생님좋은강의 감사합니다. 강의를 보고 코드를 작성하던중에 질문이 생겼습니다.강의속 코드에서 turn = 1로 초기화 하고 b 에다가 turn을 더하는 방식으로 코드를 작성하셨는데 turn = 0 으로 초기화 하고, 이에 맞게 코드를 재작성하니 원하는 답이 나오지 않아서 질문 드립니다.우선 테스트케이트 17, 5 를 입력했을때 4가 아니라 6이 나와서 애초에 틀렸기 때문에 코드를 백준에 제출하지 않았습니다. 따라서 링크가 아닌 질문에 제가 작성한 코드를 첨부하겠습니다.#include <bits/stdc++.h> using namespace std; int N, K, visited[2][500005]; bool flag; int bfs(int N, int K) { int turn = 1; queue<int> q; q.push(N); visited[0][N] = 1; while (q.size()) { K += turn; if (K >= 500001) return -1; if (visited[turn % 2][K]) { flag = 1; return turn; } int qsize = q.size(); for (int i = 0; i < qsize; i++) { int here = q.front(); q.pop(); if (here == K) { flag = 1; return turn; } for (int there : {here + 1, here - 1, here * 2}) { if (there < 0 || there >= 500001) continue; if (visited[turn % 2][there]) continue; visited[turn % 2][there] = visited[(turn + 1) % 2][here] + 1; q.push(there); } } turn++; } return -1; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> K; int res = bfs(N, K); if (flag) cout << res << '\n'; else cout << - 1 << '\n'; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-b
http://boj.kr/d58a57ff06f142f78078414e20b7da0a이것저것 바꿔보는중인데답은 맞게나오는데 통과가안되네요
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Object 클래스의 clone() 메서드 질문
Object 클래스의 clone() 메서드는 깊은 복사가 아니라 얕은 복사로 알고 있습니다.강의에서의 선생님의 말씀대로 clone() 메서드는 깊은 복사가 맞나요?
-
미해결자바 코딩테스트 - it 대기업 유제
IP주소 질문드립니다.
코드에서if(Integer.parseInt(num) > 255) return;이 부분이 일종의 메모이제이션 역할을 하니까 알파코드 문제처럼 따로 배열을 잡아서 방문처리를 안하는건가요???
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
[질문] 유기농 배추 map 정보 반영 건
안녕하세요, 강의 잘 듣고 있습니다. map 정보 반영에서 map[y+1][x+1] = true; 라고 하셨는데, map[x+1][y+1]도 true값을 넣어야 하지 않을까요?빠른 답변 부탁합니다.감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 질문
http://boj.kr/b99b5a5fdbd244e797ca23eca42b1662*설명은 주석해놓았습니다. 강의를 듣기 전에 먼저 짜본 코드인데 모든 입력 값에 대해서 is not acceptable만 출력되는 오류가 발생하는 코드입니다. 큰돌님 코드랑 비교했을 때 전체적인 로직은 다를 바가 없다고 보이는데, 어디가 잘못된건지 짚어주시면 감사하겠습니다.ㅠ