묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 코딩테스트 - 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(s<str.length() && str.charAt(s)=='0') return 0; if(s==str.length() || s==str.length()-1) return 1; if(s<str.length() && str.charAt(s)=='0') return 0; 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")); } } if(s<str.length() && str.charAt(s)=='0') return 0; 이 구문을 if(s==str.length() || s==str.length()-1) return 1;위 아래에 배치하는 순서에 따라 답이 다르던데왜 그런거죠???
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Scanner next() 메소드 관련 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1)int n = kb.nextInt();String str = kb.nextLine();==============================2)int n = kb.nextInt();String str = kb.next(); 1)과 2) 차이점이 궁금합니다.예를들어 5 \r\n 3 을 입력하는 경우,1)의 경우에는 콘솔창에엔터를 치면 입력이 안되고, 2)의 경우에는 엔터를 쳐서 따로 입력이 가능한데 왜 그런지 궁금합니다ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
좌표평면질문
성역에서 시간을 보내다보니 2주째 손을 놓아버렸네요 다시빡공갑니다좌표탐색할때 좌표평면이 저희가 평소알던게아니라 y가 뒤집어져있어서 헷갈리는데 const int dy[] = {-1,0,-,0};const int dx[] = {0,1,0,-1};가 아니라const int dy[] = {1,0,-1,0};const int dx[] = {0,1,0,-1};으로해도 답은 맞게나오던데 상관없나요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
크레인 인형뽑기(카카오)에 대한 제 풀이 코드에 어떤 문제가 있는지 질문드립니다
다음과 같이 코드를 작성했는데, 테스트케이스 4, 5번이 틀린 것으로 나오네요. 제 코드에 어떤 문제가 있는지 이해가 되지 않아서 질문 드립니다. import java.util.*; import java.io.*; public class Main { public int solution(int[][] board, int[] moves) { int answer = 0; List<Integer> dollList = new ArrayList<>(); Stack<Integer> stack = new Stack<>(); for (int i = 0; i < moves.length; i++) { stack = new Stack<>(); for (int j = 0; j < board.length; j++) { if (board[j][moves[i] - 1] != 0) { stack.push(board[j][moves[i] - 1]); board[j][moves[i] - 1] = 0; break; } } if (stack.isEmpty()) { continue; } dollList.add(stack.pop()); // 바구니에 인형을 넣음 if (dollList.size() >= 2) { for (int j = 0; j < dollList.size() - 1; j++) { if (dollList.get(j) == dollList.get(j + 1)) { dollList.remove(dollList.get(j)); dollList.remove(dollList.get(j)); answer += 2; } } } } return answer; } public static void main(String[] args) throws IOException { Main main = new Main(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[][] board = new int[n][n]; for (int i = 0; i < n; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); for (int j = 0; j < n; j++) { board[i][j] = Integer.parseInt(st.nextToken()); } } int m = Integer.parseInt(br.readLine()); int[] moves = new int[m]; StringTokenizer st = new StringTokenizer(br.readLine()); for (int i = 0; i < m; i++) { moves[i] = Integer.parseInt(st.nextToken()); } System.out.println(main.solution(board, moves)); } }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 코드 질문있습니다
안녕하십니까 큰돌님강의 보기 전에 문제를 풀어봤는데 조건문들이 좀 비효율적일까요 ??http://boj.kr/523daf3c22924bf99a5f46b5a6a8fd96
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
정수론 24분대 강의내용
24분14초 2의 제곱수로 나뉘어지는 약수를 찾아 더할때 왜 모든숫자들을 +1한상태로 봐야만 하는지 이유를 모르겠습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2979 질문 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 2979번 문제 정답 교안으로 공유해주신 코드의,맨 아래 for문에서for(int j = 1; j < 100; j++)코드 부분이 잘 이해가 가지 않습니다!시간이 1 ~ 100 사이 값이 들어온다고 하는데위의 반복문에서는 1 ~ 99번째 까지만 순회하며 주차요금을 정산하지 않나요?부등호가 <= 가 아니라 < 기호가 들어가는지 이유가 궁금합니다ㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-f return 질문드립니다.
안녕하세요. 완탐 하는재귀에서return부분을 함수가 아닌 이번 문제와같이 ret으로 리턴하는 경우의 사고 과정이 궁금합니다. 정리하면 완탐 재귀시 return 부분에 대한 사고를 어떻게 해야할까..가 고민입니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
문제다운방법
안녕하세요, 강사님! 이제 막 수업 듣기 시작한 학생입니다.다름이 아니라 문제자료를 어디서 다운받을 수 있을까요?
-
미해결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 를 따로 구현 해봤습니다.예제 코드는 다 동작하고 다른 것들도 다 동작이 되는데 반례를 찾지 못하겠습니다. 틀렸다고 뜨네요..어떤 점이 잘못되었는지 알려주시면 감사하겠습니다.