묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-W [2342] 문제 풀이 질문입니다.
강사님 안녕하세요,7-W 문제 조건 중에 최초 0,0 위치를 제외하고는 양발이 같은 위치에 있을 수 없다고 되어있는데요.풀이를 보면 왼발을 움직인 경우/오른발을 움직인 경우 각각에 대해서 min 값을 취하긴 하지만, 위에 말씀드린 양발이 같은 위치에 있는 경우에 대해 배제하는 조건이 없는 것 같아서요.현재 상태에 대한 발의 위치를 아래와 같이 나타낸다고 할 때,(왼발 위치, 오른발 위치)현재 상태가 (1,2) 이고 다음 밟아야하는 위치가 1 이면(1,2) 로 그대로 두거나, (1,x) 로 이동하는 경우만 있을 수 있는습니다.하지만, 풀이의 solve 함수에서, v[target] = 1 이 되니까,int left 의 경우에는 이므로 (1,2) 그대로 있지만,int right 의 경우에는 (1,1) 에 대해 solve 함수가 호출되지 않을까 생각이 됩니다.어쨋든 움직이지 않는 경우 (1,2) 가 노력이 덜 들어가므로 left 가 선택이 되었을 것으로 추측이 되지만, (1,1) 로 흘러들어간 DFS 가 이후에 어떤 값을 내보낼지 알수가 없을 것 같아서요문제는 통과했지만, 양발이 같은 위치에 들어오는 경우는 배제해야하지 않을까요?제 코드는 다음과 같습니다.http://boj.kr/8617c099286e4650b615631a7d5974cb
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
맞왜틀 ㅠㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/93b33cb812b94777862c0d948104ad7f이 코드인데 왜 틀렸는지 도저히 모르겠습니다. ㅠㅠㅠ
-
미해결[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법
작은 값 찾기, 이렇게는 왜 안 되나요?
코틀린은 왜 이렇게까지 null 확인에 집착하는지 모르겠네요..왜 아래와 같이는 안 되나요?fun solution(list: ArrayList<Int>) : Int{ //val minimum:Int? = list!!.minOrNull() //이건 나오고 //val sum:Int? = list!!.sum()//이것도 나오는데 //val result:Int? = sum.toInt() - minimum.toInt() //이것은 안 나옵니다. return list!!.sum().toInt() - list!!.minOrNull().toInt()//이렇게도 안 나오네요.. ㄷㄷ}
-
미해결[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법
알파벳 숫자 세기, mutableMap value 값 변경
제 주력 언어는 파이썬인데, 코틀린을 배우는데... 코틀린은 파이썬과 다르게 기능이 별로 없네요.알파벳 숫자 세는 것을 아래와 같이 하려고 하는데, value+=1이 안 됩니다. 어떻게 해야 하나요?fun solution( str : String ): Map<String, Int>{var result = mutableMapOf<String,Int>() for (i in 0..str.length-1){var currLetter = str[i].toString()//이 부분에서, 문자열을 인덱싱했으니 당연히 타입은 그대로일 줄 알았는데 Char()라고 합니다. ㄷㄷㄷㄷ 이건 왜 인가요?if (currLetter in result.keys){result[currLetter] = 2 /// 제가 하고 싶은 것: result[currLetter] += 1//전체적인 틀의 문제인가 싶어서, 강제로 2를 할당시켜봤더니 이 부분은 정상적으로 작동합니다. 그런데 1을 더하는 것이 안 되네요, 자바와 파이썬 모두 가능한 것으로 알고 있는데 왜 안 될까요? 인터넷 검색을 해봐도, 딱히 +=1이 되는 것 같지는 않네요. 자바처럼 Counter()를 써야 하나요?//혹시 몰라 아래와 같이 해보니까, 이것 또한 안 됩니다.//둘 모두 아래와 동일한 에러가 나옵니다./*Operator call corresponds to a dot-qualified call 'result[currLetter].plus(1)' which is not allowed on a nullable receiver 'result[currLetter]'.*///어떻게 해야 하나요???temp = result[currLetter]result[currLetter] = temp +1}else{result[currLetter] =1} }return result}
-
미해결자바 코딩테스트 - it 대기업 유제
공 굴리기 질문드립니다.
이렇게 작성하니까 배열 범위가 벗어낫다고 하는데, 어디가 벗어나는지 잘 모르겠습니다. import java.awt.List; import java.util.*; class Node implements Comparable<Node>{ int x; int y; int c; Node(int x, int y, int c){ this.x=x; this.y=y; this.c=c; } @Override public int compareTo(Node o) { return this.c - o.c; } } class Main { public static int n,m; public static int INF = (int)1e9; public static int[][] cost; public static int[] dx = {0,0,1,-1}; public static int[] dy = {1,-1,0,0}; public int solution(int[][] board, int[] s, int[] e){ int answer; int n = board.length; int m = board[0].length; cost = new int[n][m]; for(int i = 0; i < n; i++) Arrays.fill(cost[i],INF); answer = dij(s[0],s[1],board,e[0],e[1]); if(answer == INF) return -1; else return answer; } public static int dij(int s,int e, int [][]board, int e1, int e2) { PriorityQueue<Node> q = new PriorityQueue<>(); q.offer(new Node(s,e,0)); cost[s][e] = board[s][e]; while(!q.isEmpty()) { Node tmp = q.poll(); int nowx = tmp.x; int nowy = tmp.y; int nowcnt = tmp.c; if(nowcnt>cost[nowx][nowy]) continue; for(int i=0; i<4; i++) { int nx = nowx; int ny = nowy; int len =nowcnt; while(nx>=0 && ny>=0 && nx<n && ny<m && board[nx][ny]==0) { nx+=dx[i]; ny+=dy[i]; len++; } nx-=dx[i]; ny-=dy[i]; len--; if(cost[nx][ny]>len) { cost[nx][ny] = len; q.offer(new Node(nx,ny,cost[nx][ny])); } } } return cost[e1][e2]; } public static void main(String[] args){ Main T = new Main(); System.out.println(T.solution(new int[][]{{0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0}, {1, 0, 1, 1, 1, 0}, {1, 0, 0, 0, 0, 0}}, new int[]{1, 0}, new int[]{4, 5})); System.out.println(T.solution(new int[][]{{0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0}, {1, 0, 1, 1, 1, 0}, {1, 0, 0, 0, 0, 0}}, new int[]{0, 0}, new int[]{4, 2})); System.out.println(T.solution(new int[][]{{1, 0, 1, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 1, 0}, {1, 1, 0, 1, 1}, {0, 0, 0, 0, 0}}, new int[]{0, 3}, new int[]{4, 2})); System.out.println(T.solution(new int[][]{{0, 1, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0}, {0, 1, 1, 0, 1, 1}, {0, 0, 0, 0, 0, 0}}, new int[]{0, 0}, new int[]{4, 5})); System.out.println(T.solution(new int[][]{{0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}}, new int[]{0, 0}, new int[]{4, 3})); } }
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
#include<bits/stdc++.h>
안녕하세요.제목과 같은#include<bits/stdc++.h>이 헤더를 썼을때, visual studio 나 DevC++ 에서 실행이 되지 않고 있는데요.해결 방법이 있나요?#include <iostream>을 사용해서 실행은 되고 있습니다.그리고, 실제 코딩테스트에서는 제목의 헤더나백터, 큐 같은 라이브러리 함수를 사용하지 못하도록 되어 있는데, 예를 들면#include <stdio.h> 또는#include <iostream> 이 두가지만 허용이 됩니다.벡터, 큐, max, min, abs 등과 같이 직접 만들어야 하는 함수에 대해서 부가 설명이 있으면 좋을 것 같습니다.그리고, ios ... 등등 이전 학습을 완료해야 알 수 있는 것들에 대해서도 물론 이 강의를 수강하는 정도의 레벨이라면 알고 있는 수강생들이 많겠지만, 짤막하게라도 설명이나 찾아볼 수 있는 곳이 있으면 좋겠습니다. (별도 네이버나 구글링을 통해서 찾아보려고 생각 중 입니다.) 저는 이전 강의를 미수강하고, 바로 이 과목을 선택 했거든요. 그리고, C언어에서는 안 돌아갔었던 것 같은데, 레인지 베이스드 포문도 C++에서만 되는 건지 궁금합니다. 감사합니다.
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
두수의 차 문제
저는 이문제는 이렇게 해봤는데영상에서는 포문이 두개 들어가더라구요이 방식도 맞는지 한번 봐주실수 있을까요?def solution(nums): sortArr = sorted(nums) minVal = 1000 result = [] for i in range(len(sortArr)-1): subVal = sortArr[i + 1] - sortArr[i] minVal = min(subVal, minVal) list = [sortArr[i], sortArr[i+1]] if minVal == subVal: result.append(list) return result
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
사탕종류 문제 이방법은 안되나요?
정렬에 사탕종류 문제에서정렬파트다보니 sort로 일부러 구현하신 것같긴한데저는 봤을때 set 밖에 생각이 안났어서요현재 주어진 케이스에는 정상적으로 나오는데 혹시 생각치 못한 케이스에 안될수도 있을까라는 생각에 올려봤습니다이것도 맞는 경우인건가요?def solution(nums): size = len(nums) / 2 dist = len(set(nums)) if size > dist: return int(dist) else : return int(size) print(solution(nums))
-
미해결코딩테스트 [ ALL IN ONE ]
남은 강의 언제 업데이트 될까요?
안녕하세요 강의 너무 잘 듣고 있습니다. 다른 글에 5월-6월 초라고 하셨는데 남은 강의 언제쯤 업데이트 될까요?
-
미해결[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법
kotlin enum class
5:29분에서,enum class Color(val rgb: Int){RED(0xFF0000),}이런식으로 되어있잖아요.그런데,when(color){Color.RED->{println(Color.RED.rgb)}이렇게 해서 색깔들의 rgb 값을 가져오잖아요,그런데 enum에서는 RED(0xFF0000) 이렇게 RED와 RGB 값이 같이 묶여서 있는데, 어떻게 Color.RED라고 인식하나요? 그리고 실제 콘솔 리턴값은 16711680이라고 나오나요??? 제가 자바는 오랫동안 써봤는데 사실 enum에서 rgb 값은 안 써봐서 모르겠습니다.알려주세요,감사합니다}
-
미해결[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법
fun query(request: String) ="결과 query $request"질문입니다.
같은 class에서 fun prepareRequest():String ="기본 요청 url $url"이렇게 리턴값의 타입을 String이라고 명시해주는 반면,fun query(request:String) ="결과 query $request" 이 함수는 왜 리턴값의 타입을 명시하지 않나요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
주석처리 단축키
드래그해서 주석처리하는거 단축키가 뭔가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
_map[b]++; 질문드립니다.
안녕하세요!_map[b]++; 하게 되면 b에 입력된 값하고 인덱스번호가 자동으로 추가가 되는건가요?for(auto it : _map) cout << "first : " << it.first << " second : " << it.second << "\n";로 로그를 찍어봤는데 번호하고 값이 잘 나오기는 했습니다만 정확한 답변을 알고자 질문드렸습니다. 감사합니다!
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
변수 값 바꾸기
변수 값 바꿀때 자바는 다른 변수 하나 더 필요한데 파이썬은 없어도 되나요?
-
미해결[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법
고차함수 7:43분 관련 질문입니다.
고차함수는 함수를 인수로 받는 함수라고 이해했어요.그런데, 7:43정도에 나오는 highPrintTest(::printTest)에서 고차함수는 "결과 등을 리턴하는 함수"를 인수로 가지는 함수이기에, ::printTest 이 부분은 printTest함수의 결과값이 들어가야 하지 않나요? 그런데, 지금 printTest말고는 인수를 안 태웠기 때문에, printTest(str:String)함수에는 변수의 타입이 안 맞으니 못 들어가서 타입 에러가 나와야 하지 않나요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
Time limit가 걸리는데 어떻게 해결해야 할까요?
#include <stdio.h> #include <vector> using namespace std; int n, m; int answer = 0; void solution(vector<vector<int>> & arr, vector<int> & visited, int current){ if(current == n){ answer++; return; } visited[current - 1] = 1; for(int i=0;i<n;i++){ if(arr[current-1][i]!=0 && visited[i] == 0){ visited[i] = 1; solution(arr, visited, i+1); visited[i] = 0; } } visited[current - 1] = 0; } int main(void){ //freopen("input.txt", "rt", stdin); int start, end; scanf("%d %d", &n, &m); vector<vector<int>> arr(n, vector<int>(n)); vector<int> visited(n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ scanf("%d %d", &start, &end); arr[start-1][end-1] = 1; } } solution(arr, visited, 1); printf("%d", answer); return 0; }안녕하세요. 다름이 아니라 수업 듣기 전 짠 코드를 이용해 채점 프로그램을 실행시키면 모든 case에 대해 time limit가 나와서 질문드립니다. 위 코드에 어떤 문제가 있을까요? 채점파일 내에 있는 input.txt 입력받고 실행시키면 전부 정답으로 나옵니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-U 1450 냅색문제 메모리 초과 질문
http://boj.kr/c987a498c5014855a47dd70a1ca8da7f안녕하세요 큰돌님 !해당 문제 DP로 접근했는데 강의 초반에 말씀해주신 것처럼 메모리 초과로 실패했습니다.여쭤보고 싶은 것이 강의에서 'DP로 풀면 상태값 저장하기가 힘들다'라는 말씀해주셨는데 혹시 이 말뜻이 구체적으로 무엇을 뜻하는건가요? 저는 '결과들을 DP 배열 또는 다른 자료구조로 쌓아나가기 힘들다'라고 해석해서 처음 dp 배열을 map<pair<int,int>, int> 맵으로도 바꿔보고 sum과 idx를 1000곱하고 더해 하나의 longlong으로도 시도해봤는데요. 좀 더 생각해보니 상태값을 저장하다가 메모리 초과가 발생한 것이 아니라 재귀 스택이 너무 많이 쌓여서 메모리 초과가 발생한 것이 좀 더 meet in the middle 알고리즘을 사용하는 이유에 적합한 것 같은데 맞을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
for문 조건문 범위에 관련된 질문
강시님께서 풀어주신 TreeSet 변수 이름: set제가 풀었던(오답처리가 난) TreeSet 변수 이름: ex 강사님께서 풀어주신 for문의 형태입니다.제가 처음에 풀 때 for 문의 형태입니다.indexOutOfBoundsException이 발생하거라고 생각하여 위와 같이 조건문을 실행하였습니다. (indexOutOfBoundsException이 발생할것이라는 것은 잘못 생각한 부분입니다.) 처음에 계속 오답이 나서 조건문을 강사님과 같이 수정하니 정답처리가 되었습니다.하지만 제가 풀었던 for문의 조건문은 사실상 강사님께서 풀어준것과 똑같은 결과를 도출할 것이라 예상하였고, 실제로 set과 ex를 equals 메서드를 이용해보면 true를 반환합니다. 왜 for문의 조건문을 제가 푼 방식대로 설정하면 객체는 true를 반환하지만(같은 객체라고 판단된다고 생각됩니다.) 정답은 오답처리가 되는걸까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
연속분수수열 코드리뷰 부탁드립니다 ㅠ
import java.util.Scanner; public class Main { public static void main(String[] args) { //입력 Scanner scn = new Scanner(System.in); int n = scn.nextInt(); int m = scn.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = scn.nextInt(); } int count = 0; int sum = 0; int i = 0; int k = 1; // 더한 수열 인자의 갯수 while(i<n){ sum += arr[i]; if(sum<m) { i++; k++; } else if(sum>m){ while(sum>m){ sum -= arr[i-(k-1)]; // m 보다 크면 맨앞에거 창문에서 제거 k--; if(sum==m) count++; i++; k++; // 맨앞을빼줘서 count증가하고 index증가할때 그 다음이 바로 sum>m 경우면 또 k--를 빼주기때문에 여기서 k++를 해줘야한다. if(sum<m) i++; } } else if(sum==m){ count++; i++; } } System.out.println(count); } }문제 예제와 다른 커뮤니티 질문에 답변에 있던 예제5 31 1 1 1 1경우도 통과했는데 오답이 나옵니다 ㅠㅠ 저는 lt, rt 같은 위치자(?)를 사용하지 않고sum 되고 있는 배열 인덱스의 갯수를 세서sum > m 경우 맨 앞인덱스를 제외시킬때 사용하였습니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도되나요?
function solution(arr) { let answer = 0; let max = arr[0]; for (let i = 0; i <= arr.length; i++) { if (max < arr[i + 1]) answer++; max = arr[i + 1]; } return answer; }