묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결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); } }
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
1개의 테케에서 런타임오류가나는데 왜인지 모르겠습니다.
import java.util.HashMap; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc= new Scanner(System.in); String a = sc.next(); String b = sc.next(); HashMap<Character,Integer> map = new HashMap<>(); String answer="YES"; for(char x: a.toCharArray()) { map.put(x, map.getOrDefault(x,0)+1); } for(char x: b.toCharArray()) { if(!map.containsKey(x) || map.get(x) == 0) answer="NO"; map.put(x, map.get(x)-1); } System.out.println(answer); } }4-2입니다. 현재 이 상태인데, 한개의 테케에서 런타임오류가 뜨는데 테케가 뭔지 볼수가 없어 왜인지 원인을 못찾겠습니다. 도와주세요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
논리질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 주사위 윷놀이 문제 보고서http://boj.kr/7a485f4fb46842189dc2ce91d1db7c91 이렇게 생각을 했는데, 처음 입력받은 이동 거리를 각 말로 이동해보고, 이동 장소에 가장 높은 숫자가 있는 말을 이동하려는 그런 방식으로 꾸미려 하던 중에 구현을 어떻게 해야할지 잘 떠오르지 않아 강의를 보았는데, 완전 다른 논리로 푸시는 걸 보고, 제가 생각한 방식에 대해 강사님의 생각을 들어보고 싶습니다. (아직 구현을 하다 말아서 코드가 다 있지 않은 점 양해 부탁드립니다..)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A 일곱난쟁이 문제 질문있습니다!!
안녕하세요. 큰돌 선생님!!강의 잘듣고 있는 학생입니다! 다름이 아니라, 선생님께서 알려주신 내용들을 바탕으로 저의 식대로 한번 짜보았는데요.아래 코드를 백준에서 돌리면 결과는 잘 나오는데 틀렸다고 나오더라구요. 어디서 틀린건지 도저히 모르겠어서 질문드립니다. 코드는 선생님이 알려주신 내용 바탕으로 짠거라서 바로 아실꺼라고 생각합니다!! 답변 부탁드리겠습니다. 감사합니다. /*문제왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다.아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다.아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오.입력아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.출력일곱 난쟁이의 키를 오름차순으로 출력한다. 일곱 난쟁이를 찾을 수 없는 경우는 없다.*/ #include<bits/stdc++.h> using namespace std; vector<int> height; int sum_height = 0; const int total_height = 100; //난쟁이수, 일곱난쟁이키의 합 void printV(vector<int> &v) { vector<int> ::iterator iter; for(iter = v.begin(); iter != v.end(); iter++) { cout << *iter << "\n"; } } int main() { for(int i = 0; i < 9; i++) //난쟁이수는 9명 { int k; cin >> k; sum_height += k; height.push_back(k); } //cout << sum_height << endl; sort(height.begin(), height.end(), less<int>()); //printV(height); for(int i = 0; i < 9; i++) //난쟁이수는 9명 { for (int j = 0; j < i; j++) { if(height[i]+ height[j] == sum_height - total_height) { // cout << i << " "<< j<< " " << sum_height - total_height << endl;// cout << height[i] << " " << height[j] << endl; height.erase(height.begin() + i); height.erase(height.begin() + j); break; } } } printV(height); return 0; }
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
연속된 자연수의 합(수학) - 이렇게 풀어도 괜찮을까요?
public int solution(int n) { int answer = 0, sum = 0, lt = 1; for(int rt=1; rt <= n/2+1; rt++) { sum += rt; if(sum == n) answer++; while(sum >= n) { sum -= lt++; if(sum == n) answer++; } } return answer; }이렇게 해도 정답이 되었습니다. 문제가 풀리긴 했지만 좋은 답인지는 잘 몰라서 문의드립니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
그래프와 탐색- 4. 미로탐색 시간복잡도 관련
안녕하세요 항상 좋은 강의 잘 듣고 있습니다!선생님께서 가르쳐주신 풀이 방식이 생각한대로 나름 직관적(?)이여서 다른 문제에서도 잘 사용하고 있는데 아무래도 재귀방식이다보니 시간복잡도에서 시간초과가 발생합니다. 이러한 DFS 방식에서 시간복잡도를 낮추는 방법이 있을까요?또한 선생님께서는 이러한 문제 풀때 시간복잡도 관련해서 어떻게 해결하시나요?(예를들어 다른 풀이방식을 선호한다던지.. 등등)
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이분검색 while문 조건
안녕하세요 강사님 수업을 듣다가 궁금한 점이 생겨서 질문드립니다.while문의 조건이 lt<=rt: 인데 lt>rt가 되는 경우는 탐색이 완료되는 동안에는 없을것같아서 while문의 조건을 true로 하고 실행 시켜봤는데 채점프로그램을 돌려보면 오류가 발생합니다.true가 아니라 lt<=rt를 써야되는 이유가 어떤 상황일까요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-A 반례를 알고 싶습니다
http://boj.kr/2ee36f4f84574c92a5029deb708602c6일반 가정 집과 치킨 집 좌표를 구해두고 거리를 구한 다음 y에는 가정집 기준, x에는 치킨집 기준의 거리를 2차원 vector d에 넣어줬습니다.최소값을 구해야하기 때문에 같은 x의 y값( 즉, 치킨집을 기준으로 모든 집과의 거리)의 합을 구하여 v vector에 넣었습니다. v는 <치킨집번호, 총거리의합>으로 담았습니다.--> 이제 v[1].first에는 1번 치킨집이라는 정보, v[1].second에는 1번 치킨집과 모든 집과의 거리의 합이 들어가게 됩니다.v를 v.second(치킨집과 각 집의 총거리의 합)를 비교하는 함수로 sort하고 m만큼 반복(입력한 남아 있을 최대 치킨 집의 수) 가정집과 first(치킨집번호)에 해당하는 거리를 min 함수를 이용하여 최소값을 구한 뒤 ret에 더해줍니다.TC 모두 통과하기도 했고 논리적으로 오류가 없다고 생각했는데 틀렸다고 하여 반례 질문드립니다! 설명이 너무 장황했다면 죄송합니다ㅜ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-T 낚시왕 질문있습니다..
안녕하세요 선생님,매번 선생님 정답코드 보기전에 먼저 충분히 코딩해보고 안되면 정답보는 식으로 수업을 듣고있습니다.이번 낚시왕 문제같은경우 상어가 움직이는 로직을 좀더 신경써서 나름 코딩을 했고, Test Case와 개시판 모든 반례들을 다 통과했는데, 제출하자마자 바로 틀렸다고 나오네요..제가 무엇을 놓치고 있는지 알려주시면 감사합니다.선생님이 강의해주신 논리가 비슷한거같은데 제 코드는 제대로 계산하지 못한 반례가 있을까요..?http://boj.kr/504e729dba00420a807fdcc3a57d2fde 항상 좋은 강의 감사합니다 ㅠㅜ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 질문 있습니다.
제가 수업을 듣다가 중간중간 출력을 찍어보면서 담기는 내용을 좀 파악하고 있는데요,,코드에서 adj[54] 배열에 데이터가 담기는 과정을 출력해보고 싶은데 어떻게 코드를 작성해야 adj 배열을 출력해볼수 있는지 궁금합니다.
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
41.연속된 자연수의 합 문제풀이에서 수학적인 원리를 모르고 있습니다.
코드가 이해가 안되는 것이 아니라 수학적인 원리를 모르고있습니다.왜 15-3 = 1212%2 == 012/2 = 61+6, 2+6 즉 7,8로 가능하다는 결론이 나오는 수학적인 원리가 무엇인가요?그냥 공식이 그런것이니 외우면 되는 것일까요?