묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
크기가 정해지지 않은 자료 입력받기
안녕하세요, 항상 양질의 강의 잘 듣고 있습니다!어디에 질문해야할지 모르겠어서 부득이하게 여기 올립니다. 다들 잘 하시는데 저 혼자 너무 초보자같은 질문이라 조금 부끄럽네요..문제를 풀 때, 크기가 정해지지 않은 전제조건을 해결하는게 너무 어렵습니다ㅠㅠ 예를 들면 아래와 같은 의문이 듭니다..크기가 주어지지 않은 2중 배열(N*N) 입력받아서 복제하기 - 크기도 끝도 모르고 N*N 조건만 있으면 문자열로 입력받아서 atoi 해서 잘라서 넣어야하나?3의 배수의 크기로 입력받기, 자료값은 1또는 2또는 3만 받을 수 있다 - 입력받은 사이즈가 3의 배수가 아니거나 1,2,3 외의 숫자가 들어오면 어떻게 처리하지..? 프로그램을 멈추거나 조건에 맞게 들어올때까지 pop, push 해야하나..?제가 보기에도 너무 베이스가 없는 질문같지만 혼자 해결하기 어려워서 질문 드립니다..!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
가끔 코드에서 숫자+'0' ???
가끔 코드에서 string변환시 숫자+'0' 이건 왜있는건가요???큰돌님이 자바스크립트 장인이라서 저런식으로 변환하는거라고 생각하면되겠죠?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-H 문제 질문
강사님 안녕하세요.강사님 문제 풀이를 보고 두 가지 질문이 있습니다.1-H 문제의 아래 코드에서요,ret = max(ret, psum[i] - psum[i - k]);ret에 최소값을 할당하는건 이해가되는데, 결국 문제는 최대값을 구하는건데 왜 프썸의 합이 아닌 차를 구해서 ret 과 비교하는지 잘 이해가 가지 않습니다.변수에 최소 or 최대 값을 선언할 때, INT_MIN이나 INT_MAX 를 할당하면 문제가 될까요? 일단 해당 문제에 적용 해봤을 떄는 딱히 문제는 없었습니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 코드 짜도 되나요?
강사님 항상 감사합니다.아래와 같이 코드 짜도 문제없나요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 코드 짜도 되나요?
강사님 안녕하세요. 강의 잘 듣고 있습니다. 감사합니다.세가지 질문이 있습니다.1. 아래와 같이 코드 짜도 되나요?2. 코드가 맞다면, 제가 탐색 알고리즘 원리로 푼게 맞나요?3. 강사님 코드가 더 효율이 높다고 보면 되는건가요? 이정도 차이면 코딩테스트에서 큰건가요?- 제 코드 실행시간: 0.00021576881408691406 - 강사님 코드 시간: 0.00020885467529296875
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
강사님 소수 구하는 부분에서 질문있습니다!
여기서 num이 2일때는 어떻게 진행되나요? i=2 부터인데 i<2 일때 까지 작용하는 조건이잖아요 자연수가 2일때 이렇게 해도 정상적으로 작동되나요? 그리고 문법적인걸로 궁금한게 있는데보통 Main 에서 solution 메서드 쓰기 위해서 T 를 통해서 객체에 접근하잖아요그런데 이번에 isPrime에 접근할 때왜 메인 객체를 생성하지 않고 접근이 가능한건가요?main은 static에 올라가 있고 나머지 solition이랑 isprime은 non-static이라서 non-static 끼리는 서로 바로 이용이 가능한걸까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 4949번 - 균형잡힌 세상
http://boj.kr/6436d8d2bb3c44d3b8568985b5d28abf런타임 에러라고 뜨는데 어떻게 고쳐야 할지 전혀 모르겠습니다. 코드는 링크 첨부하였습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/4dc02e7565254fc7bfd44cd6a8609f94작성하고, 강사님이랑 코드를 비교하는데, 어느 부분이 오류가 발생한 것인지 모르겠습니다..
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
12. 단지 번호 붙이기(DFS) 코드 질문
import sys sys.setrecursionlimit(10**6) n = int(input()) arr = [] for _ in range(n): temp = input() arr.append([int(num) for num in temp]) dxs, dys = (-1, 1, 0, 0), (0, 0, -1, 1) def valid_coord(x, y): if 0 <= x < n and 0 <= y < n: return True else: return False # 1인 부분을 전부 탐색한 후 다 탐색하면 True를 return하는 함수 def dfs(x, y): global cnt if arr[x][y] == 0: return False if arr[x][y] == 1: arr[x][y] = 0 cnt += 1 for dx, dy in zip(dxs, dys): nx = x + dx ny = y + dy if valid_coord(nx, ny): dfs(nx, ny) return True return False cnt_arr = [] # arr[0][0] = 0 # 이 것이 문제 for i in range(n): for j in range(n): cnt = 0 if dfs(i, j): cnt_arr.append(cnt) print(len(cnt_arr)) cnt_arr.sort() for elem in cnt_arr: print(elem) 질문 1.정답은 똑같이 나오는데 위의 문제와 똑같은 문제인https://www.acmicpc.net/problem/2667위의 문제는 위의 코드로 통과가 되지 않습니다..ㅠㅠ계속 고민해봤지만 왜 그런지는 모르겠습니다 선생님--> 해결 되었습니다. arr[0][0] = 0 # 이 것이 문제 2번 질문또한, 아래 강사님 풀이의 DFS 함수는 return 조건이 없는데 이럴 경우, 어떻게 함수가 탈출을 하는지 이해가 안갑니다...보통 재귀 문제에서는 return 조건을 통해서 탈출을 하던데아래 문제에는 return이 없어서 혼동이 옵니다... def DFS(x, y): global cnt cnt+=1 board[x][y]=0 for i in range(4): xx=x+dx[i] yy=y+dy[i] if 0<=xx<n and 0<=yy<n and board[xx][yy]==1: DFS(xx, yy) 아래는 전체 코드 입니다.import sys sys.stdin=open("input.txt", "r") dx=[-1, 0, 1, 0] dy=[0, 1, 0, -1] def DFS(x, y): global cnt cnt+=1 board[x][y]=0 for i in range(4): xx=x+dx[i] yy=y+dy[i] if 0<=xx<n and 0<=yy<n and board[xx][yy]==1: DFS(xx, yy) if __name__=="__main__": n=int(input()) board=[list(map(int, input())) for _ in range(n)] res=[] for i in range(n): for j in range(n): if board[i][j]==1: cnt=0 DFS(i, j) res.append(cnt) print(len(res)) res.sort() for x in res: print(x)
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이 코드도 괜찮나요?
강사님 안녕하세요. 강의 잘 듣고있습니다. 감사합니다. 맥 환경이라 정답이 맞는지 모르겠네요.. 이렇게 코드 짜도 되나요?혼자서 풀면 풀리긴하는데.. 뭔가 알고리즘적 사고라기 보다는, 생각나는대로 풀기도하고, 강사님 코드보다 대부분 다 길어서.. 잘 공부하고 있는건지 모르겠습니다..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
혹시 prev 배열 연쇄 for문 python에는 그런 문법 없나요?
ret = bfs() v = [] v.append(K) while K != N: K = prev[K] v.append(K) print(ret - 1) print(*v[::-1])prev for문코드 같은 문법 파이썬에는 없나요???while문으로 만들긴했지만요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
11655 문제 결과값 변수 할당
안녕하세요.11655 번 문제 풀이에서 큰돌님은 입력 받은 변수 s 의 값을 덮어써서 결과를 출력하셨는데, 저는 아래처럼 새로운 변수에 담에서 출력했습니다. 이때, 공간 복잡도가 늘어나게 되는건가요?string s, res; int main() { getline(cin, s); for (char c: s) { if (c >= 97 && c <= 122) { if (c + 13 > 122) res += c + 13 - 26; else res += c + 13; } else if (c >= 65 && c <= 90) { if (c + 13 > 90) res += c + 13 - 26; else res += c + 13; } else { res += c; } } cout << res; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-N 질문입니다
http://boj.kr/8f12b9f44197490ebdc6ad0c7a21192c안녕하세요,제 방식대로 시간복잡도를 최대한 줄였다고 생각했는데 틀리는 이유가 뭔지 잘 모르겠습니다 ㅠㅠ
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
다른 풀이로 풀어봤는데 한번 봐주실 수 있나해서요
import java.util.*; /* ** 괄호문자제거 * input (A(BC)D)EF(G(H)(IJ)K)LM(N) * output EFLM */ class Problem2 { public String solution(String str) { String answer = ""; Stack<Character> stack = new Stack<>(); int cnt = 0; // solution 1 for (char x : str.toCharArray()) { // push: stack에 할당 if (x == '(') { stack.push(x); cnt++; } else if (x == ')') { stack.pop(); cnt--; } else { if(cnt <= 0) answer += x; } } // solution 2 // for (char x : str.toCharArray()) { // if (x == '(') stack.push(x); // else if (x == ')') stack.pop(); // else if (stack.isEmpty()) answer += x; // } return answer; } public static void main(String[] args) { Problem2 T = new Problem2(); Scanner kb = new Scanner(System.in); String str = kb.next(); System.out.println(T.solution(str)); } } 혹시 cnt 변수를 선언하여 for 한번으로 풀었는데 일단 accept 떠서 어떤 문제나 예외가 있는 지 한번 봐주실 수 있을까요????
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
오큰수 질문입니다.
http://boj.kr/4ead9c34eb8b401bbe829602497dd516arr은 값을 arr2는 입력받은 순서를 담아놓는 배열인데 어디가 틀린것인지 모르겠습니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
reverse 함수 관련 질문드립니다
n = int(input()) a = input().split() def reverse(x): x = str(x) return int(x[::-1]) def isPrime(x): for i in range(2, x+1): if x==i: return True elif x%i==0: return False for i in a: if isPrime(reverse(i)): print(reverse(i), end=" ")위처럼 슬라이싱으로 reverse함수를 작성해도 괜찮을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-i 수학숙제 Swift 풀이
기본 로직은 큰돌님과 같이1. 처음에 0 이 있다면 앞에서 모두 뺴기2. 비교는 size -> String 각각 비교로 진행하였습니다.위의 코드는 String 을 Array 로 받은 후, 직접 0을 걸렀고밑의 코드는 내부에서 0을 걸렀습니답.둘 다 예제나 스스로 만들어본 반례 모두 통과하는데, 위의 코드는 통과하고 밑의 코드는 실패해서언어의 특성때문인지, 제가 놓치는 알고리즘적인 요소가 있는지 궁금해서 여쭤봅니다.* 그리고 혹시, 이렇게 다른 언어를 여쭤봐도 괜찮은가요 ..?특히 Swift 로 다시 풀어볼 때 많이 틀리는 것 같아서 질문 올려봅니답 ㅠㅠ..통과코드 :var testCase = Int(readLine()!)! var result = [String]() var isZero = false while testCase > 0 { let input = Array(readLine()!) var integer = "" for i in 0 ..< input.count { if integer == "" && i != input.count - 1 && input[i] == "0" && (input[i + 1] >= "0" && input[i + 1] <= "9") { continue } if input[i] >= "0" && input[i] <= "9" { integer += String(input[i]) if i == input.count - 1 { result.append(integer) } else if input[i + 1] > "9" || input[i + 1] < "0" { result.append(integer) integer = "" } } } testCase -= 1 } result.sort{ (first, second) -> Bool in if first.count == second.count { return first < second } else { return first.count < second.count } } result.forEach{ print($0) }실패코드:let N = Int(readLine()!)! var result = [String]() for _ in 0 ..< N{ let input = readLine()! var tempValue = "" for i in input.indices { switch input[i].asciiValue! { case Character("0").asciiValue! ... Character("9").asciiValue!: if i == input.index(before: input.endIndex) { while !tempValue.isEmpty && tempValue.first == "0" { tempValue.removeFirst() } result.append(tempValue + String(input[i])) continue } tempValue += String(input[i]) default: if tempValue == "" { continue } while !tempValue.isEmpty && tempValue.first == "0" { tempValue.removeFirst() } result.append(tempValue) tempValue = "" } } } result.sorted { $0.count == $1.count ? $0 < $1 : $0.count < $1.count }.forEach { print($0) }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-B DFS 함수콜 질문
문제는 BFS로 해서 잘풀었습니다그런데 DFS로 해결하신거 듣고 궁금증이 들어 질문드립니다.DFS로 풀게되면 K가 최대인 2500일 경우 함수 깊이가 2500이 되지 않는건지 궁굼합니다.분명 저는 스택에 제한이 있을거라고 생각하고 있는데코딩테스트에서 DFS로 풀수 있는 함수콜 횟수 maximum 값을 얼마로 고려해야 하나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-N: 1629 곱셈 문제 질문 드립니다.
1-N: 1629 곱셈 문제 질문 드립니다.테스트 코드는 잘 돌아가는 데 문제가 계속 틀렸다고 해서 질문 드립니다. 하기에 작성한 코드 링크 남겨두었습니다.항상 좋은 가르침을 주셔서 감사합니다. http://boj.kr/17ebfc4a096343a6a592d0c3a16aa0a0
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
리턴 타입을 void로 해서 풀었는데 확인부탁드립니다.
null이 아니면 계속 뻗어나가고 lt와 rt 둘다 null이면 answer 에다가 L의 최소값을 구해나가는 방식입니다.성능의 차이가 있을까요?..import java.util.*; import java.io.*; class Node { int data; Node lt, rt; public Node(int data) { this.data = data; lt = null; rt = null; } } public class Main { static int answer = Integer.MAX_VALUE; public static void dfs(int L, Node root) { if (root.lt == null && root.rt == null) { answer = Math.min(answer, L); } else { if (root.lt != null) dfs(L + 1, root.lt); if (root.rt != null) dfs(L + 1, root.rt); } } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = null; Node root = new Node(1); root.lt = new Node(2); root.rt = new Node(3); root.lt.lt = new Node(5); root.lt.rt = new Node(6); dfs(0, root); System.out.println(answer); } }