묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨코딩테스트 [ ALL IN ONE ]
not stack , stack 질문
스택 문제풀이에서return not stack이나 while stack and stack[-1][1] 는 무엇을 의미하나요? 1. while stack and stack[-1][1] < temp : 2. while temp > stack and stack[-1][1] :1번과 2번 코드가 왜 다르게 작동할까요??감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 비밀번호 발음하기
안녕하세요 큰돌님 강의 보기 전에 제가 한번 풀어서 제출 해보았는데 도저히 어디서 틀린지 잘 모르겠습니다. 혹시 한번 봐주실 수 있나요?http://boj.kr/118b5fa8299d44d19aa64f0e13bb0932
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
컴파일 에러 원인
선생님의 풀이말고 다른 풀이로 풀었는데 컴파일 에러가 납니다.혹시 어떤 부분이 잘못된 지 알려주실 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-N 시간복잡도 질문
안녕하세요. 선생님! 좋은 강의 열심히 듣고 있습니다.4-O 질문이 있는데요(백준 15353 큰수 A+B(2) , https://www.acmicpc.net/problem/15353). 실수 A,B의 범위가 10의 10000승까지인데, 선생님처럼 문자열의 문자 하나씩 정수로 바꿔서 처리한다면 시간복잡도가 10의 10000승 아닌가요..? 이 문제를 선생님처럼 풀기전에 시간초과에 걸린다고 생각했습니다...감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
while(scanf("%d", &n) != EOF)를 써야하는건 오바 아닐까요
입력이 끝나는 조건을 제대로 알려줘야 하지 않나요 이런건 너무 불친절한 문제인거 같아요 앞으로는 이런 입력일때 while(scanf("%d", &n) != EOF)를 쓰면 되려나요
-
해결됨코딩테스트 [ ALL IN ONE ]
VSCode로 확인
선생님 코드를 보고 이해하고 VSCode로 input을 통해서 확인해보고 싶은데 아직 초보라 잘 모르겠는 점이 있습니다. 이렇게 찍어보면 NameError: name 'dailyTemperatures' is not defined 라고 뜨는데 직접 input을 넣고 output을 확인하려면 어떻게 코드를 작성해야할까요?class Solution(object): def dailyTemperatures(self, temperatures): answer = [0]*len(temperatures) stack =[] for day, tmp in enumerate(temperatures): while stack and stack[-1][1] < tmp: prev_day, _ = stack.pop() answer[prev_day] = day - prev_day # stack이 비어있으면 while문 안타고 바로 append stack.append((day, tmp)) return answer print(dailyTemperatures([73,74,75,71,69,72,76,73]))
-
해결됨코딩테스트 [ ALL IN ONE ]
혹시 아직 올라오지 않은 강의파트는 언제쯤 업로드 될 예정인지 궁금합니다.
아직 올라오지 않은 우선순위큐부터 이분탐색 파트 부분은 언제쯤 업로드 될 예정인지 알려주실수 있나요?
-
해결됨자바 코딩테스트 - it 대기업 유제
잃어버린 강아지 코드 질문
Thing이라는 클래스를 생성하여 멤버 변수로 x, y, d를 가지게 했습니다.처음 for문을 돌면서, dog과 person이라는 객체를 생성해서 각자의 x,y,d값을 가지도록 생성자를 구현했습니다.그 외의 로직은 강의와 거의 유사한데, 첫번째 테스트 케이스는 51이 나오지만 두번째 테스트케이스가 0으로 나오고 있습니다.코드 첨부하겠습니다.class Thing { int x; //x 좌표 int y; //y 좌표 int d; //바라보는 위치 public Thing(int x, int y, int d) { this.x = x; this.y = y; this.d = d; } } public class Code04 { public int solution(int[][] board){ int[] dx = {-1, 0, 1, 0}; int[] dy = {0, 1, 0, -1}; Thing person = null; Thing dog = null; int time = 0; //사람과 강아지의 위치 좌표를 찾는다. for(int i=0; i<board.length; i++) { for(int j=0; j<board[i].length; j++) { if(board[i][j] == 2) { person = new Thing(i, j, 0); } if(board[i][j] == 3) { dog = new Thing(i, j, 0); } } } if(person == null || dog == null) { // 2 혹은 3이 존재하지 않는 경우 return 0; } while(time < 10000) { time++; int px = person.x + dx[person.d]; int py = person.y + dy[person.d]; int dogX = dog.x + dx[dog.d]; int dogY = dog.y + dy[dog.d]; boolean flagP = true; boolean flagD = true; if(px == dogX && py == dogY) { return time; } if(!isValidXY(px, py, board)) { person.d = (person.d + 1) % 4; flagP = false; } if(!isValidXY(dogX, dogY, board)) { dog.d = (dog.d + 1) % 4; flagD = false; } if(flagP) { person.x = px; person.y = py; } if(flagD) { dog.x = dogX; dog.y = dogY; } } return 0; } private boolean isValidXY(int x, int y, int[][] board) { return x >= 0 && y >= 0 && x < board.length && y < board.length && board[x][y] != 1; } public static void main(String[] args){ Code04 T = new Code04(); int[][] arr1 = { {0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 2, 0, 0}, {1, 0, 0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 3, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 1, 0, 0, 0, 0}, {0, 1, 0, 1, 0, 0, 0, 0, 0, 0} }; System.out.println(T.solution(arr1)); int[][] arr2 = { {1, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 1, 0, 0, 0, 0}, {1, 0, 0, 0, 0, 0, 1, 0, 1, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 2, 1}, {0, 0, 0, 1, 0, 1, 0, 0, 0, 1}, {0, 1, 0, 1, 0, 0, 0, 0, 0, 3} }; System.out.println(T.solution(arr2)); } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
psum[0] 값이 0인이유
안녕하세요 선생님 수업 잘 듣고 있습니다! 혹시 뇌를 잃어버린 승철이 문제에서 psum[0]값을 정의하지 않았음에도 0인 이유는 무엇인가요? 예전에는 값을 정의하지 않으면 랜덤한 값이 나온다고 어디서 들었던것 같은데 print를 해봐도 0이나와서 신기해서 여쭤봅니다. 강의 잘 듣고 있습니다 감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-A
http://boj.kr/13f68e0e5c5840e9ba82ddfc8aa54993위 코드에서 주석을 제외하면 모든 입력에서 출력이 0이 나오는데 왜 그런지 잘 모르겠습니다.큰돌님 코드를 보면서 수정해서 거의 비슷한데 큰돌님 코드에서는 visited배열을 0으로 명시해줄 필요가 없었는데 왜 위 코드에서는 visited배열을 0으로 명시해줘야지 출력이 제대로 나오는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-A번
안녕하세요 큰돌님 . 2-A번 문제 2178번 미로 탐색 문제를 푸실때 배열 두개다를 max_n = 104개로 잡고 하는데 왜 104 인거죠? 특별한 이유가 있나요?그리고 N은 2 이상인데 104보다 클수도 있는데 왜 104로 특정했는지 궁금합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘교안 p113 2차원배열수정하기 질문
안녕하세요 사소할 수 있지만 궁금해서 질문올립니다!p113 코드 전문->>제가 먼저 113페이지 교안 코드 읽고 내용 이해한 다음에 교안 안보고 코드 타이핑해서 컴파일돌렸을때 위 사진의 코드처럼 6~13번째 줄 벡터 이름을 v, v2, v3로 작성했고, 잘 돌아갔습니다.그런데 교안과 동일하게 작성했는지 다시 봤더니 교안은 6~13번째 줄이 아래 코드처럼 셋다 v로 들어가있더라구요?void go(vector<vector<int>> &v){v[0][0] = 100; }void go2(vector<vector<int>> &v){v[0][0] = 100; }void go3(vector<int> v[10]){v[0][0] = 100; }그래서 오타인가 싶어서 제가 처음 작성했던것과 결과가 같은지 교안의 코드도 돌려봤는데 결과도 똑같이 나왔습니다..이거 왜그런건가요?? 오타가 아닌건가요?go(v); go2(v2); go3(v3); -> 저는 이 부분 때문에 인자와 매개변수를 일치시키기 위해 함수선언 부분에도 v, v2, v3로 작성했던거였는데, 일치시키지 않고 다 v로 넣어도 결과가 같은 이유를 모르겠습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
split함수 질문 있습니다!
http://boj.kr/1209b05bb2834533b556253dab193f9d교안에 있는 스플릿함수에서 string::npos의 기능은 무엇이고 언제 !=string::npos가 실행되는지 궁금합니다.pos선언시 pos의 값은 숫자에 불과할텐데 int가 아닌 long long을 사용하신 이유가 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘교안 p101 Point구조체 정의하기 코드해석 불가ㅠㅠ
이 코드 아예 해석이 안됩니다.......(참고로 언어는 C 하나 배워봤고 그 다음으로 지금 C++ 처음 공부해보는데 그래서 이해 못하는부분이 있는건지..조차 모르겠네요ㅠ)일단 4번째줄 Point 구조체 안에 int형 멤버변수 y,x까지는 알겠는데그 다음줄 Point(int y, int ) : y(y), x(x){} 부터 끝까지 아예 뭔소린지 모르겠습니다.이전 질문들 검색해보니 연산자 오버라이딩이라고 설명해주신 글이 있던데, 읽고 나서 '아 저 코드가 새롭게 연산자를 오버라이딩하는 코드구나'라는건 인지했는데 여전히 코드는 어떻게 해석하는지 모르겠어요.일단 Point는 우리가 방금 정의한 사용자 정의 자료형인데, 자료형 다음에 변수명이 와야 정상인거같은데 5,6번째줄 Point다음에 괄호가 바로 나오는것도 형식이 이해가 안가고,제가 지금까지 교안으로만 학습한 바로는, 범위기반for루프에서 : 기호를 사용한 형식이 있었던 것 말고는 : 를 본적이 없어서 Point(int y, int ) : y(y), x(x){} 여기 들어가는 : 기호가 무슨뜻인지 모르겠고, y(y), x(x)의 괄호도, 끝의 {}도 뭔지 모르겠어요.bool은 참거짓 판별 타입인데 저기서 왜 bool이 쓰였는지, operator는 뭔지, &는 주소를 나타낼때 쓰는거밖에 모르는데 const Point & a의 &는 내가 아는 의미가 맞는지, 맞다면 a는 정체가 변수인지 뭔지, a.x도 역시 a가 뭔지 모르니까 해석이 안되네요ㅠㅠ죄송합니다 너무 총체적난국이죠..?ㅠㅠ지금 여기서부터 p109까지 코드가 겹치는부분이 많아서 거의 이해가 힘든 상황이라 일단 p110으로 넘어가서 공부하고 있겠습니다...
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
바둑이 승차 문제 강의 코드랑 비슷한데 오류가 나는 이유가 뭘까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.public class Main { static int m, n; static int max = 0; public static void DFS(int k, int sum, int[] arr) { if(sum > m) return; if(k == n - 1) { max = Math.max(sum, max); return; } DFS(k + 1, sum + arr[k + 1], arr); DFS(k + 1, sum, arr); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); m = sc.nextInt(); n = sc.nextInt(); int[] arr = new int[n]; IntStream.range(0, n).forEach(i ->{ arr[i] = sc.nextInt(); }); DFS(0, arr[0], arr); System.out.println(max); } }강의 코드랑 다른 점은 sum이 0에서 출발하고 저는 arr[0]부터 출발했다는 것 같습니다.코드 채점에서는 대부분의 경우가 맞지만 딱 마지막 경우의 수에서 오류가 나더라고요.제 코드에서 틀린 점이 무엇일까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안 103페이지 map 사용시 주의점
103p 앞부분 설명에서,'다만 앞의 코드는 문제에서 해당 키값에 0이 아닌 값이 들어갈 때 활용이 가능합니다. 만약 문제에서 키에 0이 들어가는 경우 앞의 코드는 활용이 불가능합니다.예를 들어 문제에서 {0, : 주홍철}, {1, 역사} 이렇게 담는다면 불가능하고, {1 : 주홍철} , {2, 역사} 이렇게 담는다면 해당 로직에 사용가능합니다.'부분이 잘 이해가 가지 않습니다..왜 {0, : 주홍철}, {1, 역사} 이렇게는 불가능한 것이고 {1 : 주홍철} , {2, 역사} 이렇게면 가능한 것인가요? 102p 코드 예시는 map<int, int>인데 103p 설명 예시는 map<int,string>인 경우에서 다시 설명해주신 것 같은데 잘 이해가 가지 않습니다 ..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
Mac C++ 프로그램 설치
큰돌님 안녕하세요, 이번에 처음으로 코딩 공부를 시작했습니다. 본격적인 강의 시작에 앞서 Mac에서 C++ 프로그램 설치 중 제가 제대로 한 것인지 확인할 수 없어 질문 남깁니다.Ternimal에 Brew 및 GCC설치 완료교안에 나온대로 cd /usr/local/includemkdir bitscd bitsvi stdc++.h 구동하면 Insert가 아닌 "stdc++.h" [New]가 나옵니다. 그 후 지시대로 링크에서 코드 복사 후 붙여넣기하고 :wq입략하면 창이 그대로 있습니다.제가 C++ 프로그램을 제대로 설치한 것일까요? 아니라면 어디서부터 다시 설치해야할까요? 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-0 long long, int
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/4cc380b86f234f8ebe20dedceedfdc4f안녕하세요 강사님 작은 궁금한 점이 있어 질문 남깁니다.1-O 이 문제에서 int, long long 둘 다 백준에서 정답 처리가 되는데 원래 long long을 써야하는데 큰 테스트케이스가 없어서 통과되는 건가요 아니면 int도 맞는 건가요??계산이 잘 안되어서 큰 값인거 같은데 헷갈리면 코테에서 int 대신 long long을 써도 아무 상관 없나요??
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
제가 푼 방식이 시간이 좀 오래 걸리는 것 같아 질문합니다.
안녕하세요!제가 queue와 구조체를 이용해 문제를 풀었는데 1초가 넘게 걸려서 무엇이 문제인지 질문합니다queue의 push, pop은 O(1)이라고 알고 있는데도 이렇게 오래 걸려서..제가 유추하기로는 구조체를 썼기 때문인 것 같은데...만약 그렇다면 왜 그런 것인가요...?코드 아래 첨부합니다.#include<cstdio> using namespace std; #include<vector> #include<algorithm> #include<string> #include<queue> int main(void) { //cin.tie(NULL); // 얘네 3줄은 iostream include했을 때 필요한 것. //cout.tie(NULL); //ios::sync_with_stdio(false); freopen("in4.txt", "rt", stdin); // 파일 입력받음 struct NumWork { int work; // 작업 번호 int t; // 작업 시간 }; int n, k; scanf("%d", &n); queue<NumWork> work; for (int i = 0; i < n; i++) { int tmp; scanf("%d", &tmp); work.push(NumWork{ i + 1, tmp }); } scanf("%d", &k); int time = 0; // 총 시간 while (work.empty() == false) { if (time == k) // 만약 k초면 break; break; NumWork now = work.front(); work.pop(); time++; // 시간은 언제나 흐르므로 ++ if (now.t - 1 == 0) // 작업시간이 0됐으면 다시 queue에 넣지 않음 continue; work.push(NumWork{ now.work, now.t - 1 }); } if (work.empty()) // work가 empty면 모든 작업이 k이전에 끝난 것 printf("-1"); else // empty가 아니면 k초 이후에 작업이 남아있었음 printf("%d", work.front().work); }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
순열을 재귀함수로 구현했을 때의 장점
안녕하세요, 선생님 다름이 아니라 순열을 재귀 함수로 구현했을 때의 장점이 많을 것 같아 질문 드립니다. 선생님께서 영상 중간에 재귀 함수로 순열을 구현하는 것보다 next_permutation을 사용하여 순열을 구현하는 것이 더 좋다고 말씀하셨습니다. 저 또한 선생님께서 말씀하신 부분을 충분히 동의하지만, 한 가지 의문이 드는 부분이 있습니다. next_permutation을 통해 순열을 구현하고자 할 때, 순열을 적용하고자 하는 컨테이너가 정렬되어 있어야 한다는 전제 조건이 필요합니다. 따라서 우리가 어떤 알고리듬 문제를 next_permutation으로 해결하고자 할 때, 평균적으로 O(nlogn)의 성능이 필요합니다. 반면, 재귀 함수로 순열을 구현하는 경우 순열을 적용하고자 하는 컨테이너의 순서와 상관없이 순열을 바로 적용할 수 있습니다. 그렇다면, 재귀 함수를 통해 순열을 구현하는 방법을 선호하는 것이 더 좋지 않을까요? 물론, 재귀 함수를 처리하는 데 드는 비용이 정렬을 처리하는 데 드는 비용보다 높다면 next_permutation 함수를 사용하는 것이 더 효율적이라고 생각합니다! 항상 좋은 강의 해주셔서 감사합니다 ㅎㅎ!