묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 공유 부탁드립니다!
(질문이 해결되어 내용 삭제합니다! 감사합니다)
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2강 최적화 36:18분 부터 설명해주시는 개념에 관하여
설명해주신 개념 정리해봤는데 제가 잘 못 이해한 부분있는지 피드백 받고자 올려봅니다~!
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
심화 탭 > 최적화 수업
수업 자료가 mp4로 들어가 있는것 같습니다 🙂 혹시 의도하신게 아니라면 수정이 필요할거 같아요 !
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지
파일 실행시
파일 실행시에 cmd a + shift + enter 하면 실행된다고 하셨는데, 우측 상단에 재생 버튼으로도 파일이 똑같이 실행되는건가요?평소에 우측 상단 실행버튼으로 파일 실행시켰었는데 알려주신 방법과 차이가 있는지 궁금해서요
-
미해결코딩테스트 [ ALL IN ONE ]
디스코드 초대장이 올바르지 않다고 뜹니다
안녕하세요! 코딩테스트 All In One 강의 수강중인 취준생입니다.다름이 아니라, 디스코드 채널에 합류하기 위해 다른 글의 초대장 링크를 눌러봤지만, 올바르지 않은 초대장이라고 뜹니다ㅜㅜ혹시 새로운 디스코드 초대 링크를 받을 수 있을까요??
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
ChatRoom에서 synchronized 사용 이유
당장에는 문제가 발생하지 않아도 나중에 많은 쓰레드의 공유 자원에 대해서는 동기화 처리가 필요하기 때문에 synchronized method로 선언한걸까요?해당 예제에서는 모종의 이유로 연결이 해제되어 ChatRoom에서 remove되어야 할 때 해당 쓰레드만이 remove()를 호출하여 동기화 처리가 굳이 필요 없는게 아닌지 궁금합니다.
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지
코드 속도가 어디서 차이나는지 궁금합니다!
안녕하세요~ [초미니 프로젝트] 동전 앞뒤 맞추기 프로젝트를 내 나름대로 바꿔서 팀 정하는 프로그램으로 작성했습니다. 궁금한 것은 아래에 있는 코드를 실행소요 시간입니다.import random import time start = time.time() n = 500000 while(n > 0): random_number = random.randint(1,12) mod = random_number % 3 ## 처음 작성한 방법 # if mod == 0: # print("Red Team!") # elif mod == 1: # print("Blue Team!") # else: # print("Green Team!") ## 더 빠를거라 예상한 방법 team_list = ["Red", "Blue", "Green"] print('{} Team!'.format(team_list[mod])) n -= 1 end = time.time() print(end - start)랜덤으로 뽑은 숫자로부터 빨강, 파랑, 초록 팀을 출력해주는 코드입니다. 반복문이 여러번 나와서 더 간단하게 만들수 없을까 생각했습니다. 그래서 mod 변수를 인덱스로 사용하여 리스트에 접근하면 더 간단하게 표현할 수 있겠다고 생각했습니다. 그리고 어떤게 더 효율적일지 실험해봤습니다.처음 작성한 코드는 3.348072052001953,리스트로 작성한 코드는 4.024623870849609 가 걸렸습니다. 제 생각에는 리스트가 더 효율적일거라 생각했는데 왜 더 시간이 오래 걸렸을까요?반복문도 mod 값에 맞는 조건을 찾을때까지 순차적으로 접근하고, 리스트도 순차적으로 접근하는 자료구조라 적어도 비슷해야할거라 생각이 듭니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2강 20:28초에서 설명하고 있는 최적화 방법에 관하여
강사님! 20 팩토리얼에 2가 몇 번 곱해져있는지 설명해주시는 부분에서 질문이 있습니다. 마지막에 20을 2의 제곱수로 나눴을 때 몫의 정수 부분 합이 2가 몇 번 곱해져 있는지 나타내는 수라고 알려주셨는데요. 이게 어떤 원리인지 궁금합니다. 그러니까 수학적으로 왜 이렇게 같을 수 있는지 알고싶어요!
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
11653번 (2강 최적화) 질문이있습니다.
아래와 같이 완전탐색(?)을 이용해 작성하였는데요, 말씀하신 최적화 방법(약수를 구할때는 해당 수의 제곱근까지만 구해도 약수의 개수와 약수를 구할 수 있다)으로 어떻게 코드를 최적화 할 수 있을지 잘 모르겠습니다. let input = readLine().map { Int($0)! }! var answer: [Int] = [] var previous = input func check(i: Int, divided: Int) -> Bool { if divided % i == .zero { answer.append(i) previous = divided / i return true } else { return false } } if input == 1 { } else { for i in 2...(input) { var flag = true repeat { let check = check(i: i, divided: previous) flag = check } while flag } answer.compactMap { print(String($0)) } }
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지
강의노트 에러
강의노트를 누르면 에러가 떠서 다운을 못 받고 있습니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
자료 자체와 정렬된 인덱스 분리 강의에서 질문
강의 9분에 등장하는 MakeIndexAge 함수에 관한 질문입니다.MakeIndexAge 함수가 원래 자료구조의 손상을 가하지 않기위해노드들의 주소들을 담은 배열을 만들고 정렬한 후, 반환하는 함수라는 것은 알고있습니다.그런데 MakeIndexAge 함수의 반환형이 왜 USERDATA**가 아니라 void**인지 이해가 가질 않습니다.USERDATA**로 반환형을 잡으면 안되나요?
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
[바닥장식][런타임에러] 질문 있습니다.
강사님이 작성해주신 코드로 실행을 해봤을때 런타임 에러가 발생합니다. 제가 코드를 잘못 작성한 걸까요?import sys sys.setrecursionlimit(10**6) inpurt = sys.stdin.readline def dfs(y, x): global map_ cur = map_[y][x] map_[y][x] = "" if cur == "-" and map_[y][x + 1] == "-": dfs(y, x + 1) elif cur == "|" and map_[y + 1][x] == "|": dfs(y + 1, x) # 1. initialize N, M = map(int, input().split()) MAX = 50 + 10 # N * M map_ = [["" * MAX] for _ in range(MAX)] # 2. connection info for i in range(1, N + 1): row = input() for j in range(1, M + 1): map_[i][j] = row[j - 1] # 3. dfs answer = 0 for i in range(1, N + 1): for j in range(1, M + 1): if map_[i][j] != "": dfs(i, j) answer += 1 # 4. print print(answer)코드에 오타가 있는 것 같습니다 map -> map_
-
미해결이득우의 꼭 배워야하는 게임 알고리즘
쿼드트리 구현 강의자료에 포함된 LQNode의 GetQuads함수에 궁금한 점이 있습니다.
LooseQuadTree의 Query함수 호출 시 겹칠 가능성이 있는 모든 LQNode를 수집할 때 일부 결과가 누락된 것으로 판단되어서 문의합니다.강의 자료의 Query함수의 기능이 틀린 내용인지, 아래 내용이 옳은지 그리고 더 최적화된 로직이 있는지 궁금합니다.public LQNode(LQuadtree tree, LQNode parent, Bounds bounds, int depth) { _tree = tree; _parent = parent; _bounds = bounds; _looseBounds = new Bounds(bounds.center, bounds.size * tree._constantK); _depth = depth; } private List<LQNodeIndex> GetQuads(Bounds bounds) { List<LQNodeIndex> quads = new List<LQNodeIndex>(); if (_children[(int)LQNodeIndex.UPPERLEFT]._looseBounds.Intersects(bounds)) { quads.Add(LQNodeIndex.UPPERLEFT); } if (_children[(int)LQNodeIndex.UPPERRIGHT]._looseBounds.Intersects(bounds)) { quads.Add(LQNodeIndex.UPPERRIGHT); } if (_children[(int)LQNodeIndex.LOWERRIGHT]._looseBounds.Intersects(bounds)) { quads.Add(LQNodeIndex.LOWERRIGHT); } if (_children[(int)LQNodeIndex.LOWERLEFT]._looseBounds.Intersects(bounds)) { quads.Add(LQNodeIndex.LOWERLEFT); } return quads; }
-
해결됨코딩테스트 [ ALL IN ONE ]
디스코드 초대장이 올바르지 않다고 뜹니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결Go Hard to C (feat. Algorithm)
음질이 안좋습니다
초반부 듣고 있는데 말 중간 중간에 소리가 계속 끊겨서 들립니다. 잡음도 간간히 들리네요.영상 촬영하시고 검수해보셨나요..
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
DNA 비밀번호 (백준 12891) 통과가 안됩니다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int[] myArr; // 내가 받은 문자열의 부분 문자열 조건 만족하는지 확인용 static int[] checkArr; // 주어진 부분 문자열 조건 static int checkSecret; // 모두 만족하는지 카운트 public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine()); int S = Integer.parseInt(stringTokenizer.nextToken()); // 문자열의 길이 int P = Integer.parseInt(stringTokenizer.nextToken()); // 부분 문자열의 길이 int result = 0; myArr = new int[4]; checkArr = new int[4]; checkSecret = 0; char[] A; // 주어진 문자열을 담을 배열 A = bufferedReader.readLine().toCharArray(); stringTokenizer = new StringTokenizer(bufferedReader.readLine()); for(int i = 0; i < 4; i++) { checkArr[i] = Integer.parseInt(stringTokenizer.nextToken()); if(checkArr[i] == 0) { // 주어진 조건이 0이면 이미 만족하기 때문에 checkSecret을 1증가시켜줌 checkSecret++; } } for(int i = 0; i < P; i++) { // 부분 문자열 처음 받을때 세팅 Add(A[i]); } if(checkSecret == 4) { result++; } for(int i = P; i < S; i++) { // 슬라이딩 윈도우 int j = i - P; Add(A[i]); Remove(A[j]); if(checkSecret == 4) { result++; } } System.out.println(result); bufferedReader.close(); } private static void Remove(char c) { switch (c) { case 'A': if (myArr[0] == checkArr[0]) { checkSecret--; myArr[0]--; } break; case 'C': if (myArr[1] == checkArr[1]) { checkSecret--; myArr[1]--; } break; case 'G': if (myArr[2] == checkArr[2]) { checkSecret--; myArr[2]--; } break; case 'T': if (myArr[3] == checkArr[3]) { checkSecret--; myArr[3]--; } break; } } private static void Add(char c) { switch (c) { case 'A' : myArr[0]++; if(myArr[0] == checkArr[0]) { checkSecret++; } break; case 'C' : myArr[1]++; if(myArr[1] == checkArr[1]) { checkSecret++; } break; case 'G' : myArr[2]++; if(myArr[2] == checkArr[2]) { checkSecret++; } break; case 'T' : myArr[3]++; if(myArr[3] == checkArr[3]) { checkSecret++; } break; } } }로컬에선 문제없이 동작하는데 백준에서는 계속 통과가 안되네요.. 혹시 동일하신분들 계실까요?
-
미해결오픈소스 자료구조 및 알고리즘 in C
메모리 풀링 속도 확인
안녕하세요, malloc() 대신 스택 변수로 NODE 배열을 만들어서 사용하는 것을 보았는데요,정말로 빠른지 확인해보고 싶은데 어떻게 할 수 있을까요?
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
촌수 계산
count라는 매개변수를 같이 전달해주기 보다 dfs가 호출될 때마다 answer를 넣어주는 방식으로 풀어봤는데 왜인지 end 값을 찾았을 때 return이 적용이 안되는 거 같습니다. 혹시 어떤 문제가 있는지 봐주실 수 있나요? import java.util.*; import java.io.*; class Main { static int N, start, end, M; static boolean[] visited; static ArrayList<Integer>[] graph; static int answer = -1; private static void dfs(int i) { if (i == end) { System.out.println("end: " + end); return; } visited[i] = true; for (int j = 0; j < graph[i].size(); j++) { int next = graph[i].get(j); if (visited[next] == false) { System.out.println("next: " + next); dfs(next); answer++; } } } public static void main(String[] args) throws IOException{ // 입력 및 초기화 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); N = Integer.parseInt(br.readLine()); // 노드의 개수 StringTokenizer st = new StringTokenizer(br.readLine()); start = Integer.parseInt(st.nextToken()); // 시작 노드 end = Integer.parseInt(st.nextToken()); // 끝 노드 System.out.println(end); M = Integer.parseInt(br.readLine()); // 간선의 개수 visited = new boolean[N+1]; // graph 선언 후 초기화 graph = new ArrayList[N+1]; for (int i = 1; i <= N; i++) { graph[i] = new ArrayList<>(); } for (int i = 1; i <= M; i++) { st = new StringTokenizer(br.readLine()); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); graph[x].add(y); graph[y].add(x); } System.out.println(Arrays.toString(graph)); // dfs 호출 dfs(start); System.out.println(answer); bw.close(); br.close(); } }
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
구현 연습에 대한 개인적 의문
제가 나름 강사님의 큰 틀의 사고를 이용해서 구현을 하는데 차이가 약간씩 나고 있습니다. 이걸 코드 수준에서 동일하게 하도록 연습을 해야 할 지 아니면 저의 사고를 우선으로 하고 차이를 조정을 해야할지 고민이 있어 질문 드림니다!
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
완전탐색 1090 문제 질문드립니다.
for y in arr_y: for x in arr_x: 제공해주신 코드에서 y,x 각 축을 꼭 다돌아야 하는건가요?강사님이 설명해주신부분에서 여러명이 한곳에서 모일때 비용을 최소화하기위해서는 여러명중 한명의 집에서 모이면된다. 라는 부분을 참고하면 입력된 4개의 좌표(집)값에 대해 각 좌표 값에대해 나머지 좌표값들의 거리를 계산하면 되는거아닌가요..??for ex, ey in arr: # [15, 14], [15, 16], [14, 15], [16, 15] for x, y in arr: # [15, 14], [15, 16], [14, 15], [16, 15]이런식으로요조언 부탁드립니다.