안녕하세요 강사님!!! 아래는 강사님 답안인데요. line 15, 17 에서 배우지 않는 경우(line 17)에만 max로 ret을 갱신하는 이유를 이해하지 못하겠습니다. line 15에서는 max로 ret을 갱신하지 않아도 되는건가요?? https://www.acmicpc.net/source/share/7943b7d08dcb4d30bec01eabbf160e77 감사합니다:) - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
http://boj.kr/65b87eda9f96404baf74fad6bb896f57 aa*dd인 경우를 대비하여 알려주신 split함수를 통해 범위를 분리하고 문자를 비교했습니만, 이번에도 똑같이 오답처리되었습니다. 실행시켰을때 결과도 잘 출력되는데 어디가 잘못되었는지 잘 모르겠습니다. 감사합니다.
http://boj.kr/7e9d3dcea50f42d6b98de1ab7d2db841 1.선생님 풀이를 보면 문제를 2중 For문으로 해결하셨는데, n의 범위가 o<n<=15000 인데, 이렇게 되면 최악의 경우 시간복잡도는 O(n^2)이고 -> 2억2500번 제한시간이 2초니까 2억번안에 해결이 안되서, 시간초과 오류가 나올 것 같은데 pass 되는게 신기합니다 . 제 풀이는 재귀함수로 풀었는데 이또한 시간복잡도를 구해보지는 않았지만, 시간초과가 아슬아슬할 것 같은데 넉넉하게 380ms로 통과하는게 의아합니다.
안녕하십니까 큰돌님 시간복잡도가 정확하게는 1((3^n+1) - 1) / 2 이렇게 되는게 맞는 건가요 ?? 이전 점화식 가르쳐주시는 강의에서 등비수열의 합에서 더하는 것의 개수(즉, n)까지 생각해서 식을 작성했는데 이번 강의에서는 더하는 것은 개수는 그냥 n으로만 하셨는데 시간복잡도는 똑같이 나오니까 크게 신경 안 써도 되는 건가요 ??
안녕하세요 강사님. 가장자리부터 N x M 2차원 배열을 탐색해나가는 문제라고 생각했습니다. 이 과정에서 치즈를 녹이는 과정을 플루드필 알고리즘이라고 판단했습니다. 그래서 BFS로 해결했는데요. queue를 2개 사용해서 풀었는데, dfs에서 vector를 사용한 것과 비교했을 때, 이 문제 조건에서는 n, m <= 100이라서 그리 크지 않아 문제가 되지 않다고 생각되는데 범위가 더 크다고 하면 queue를 2개 쓰는게 덜 효율적인가요? http://boj.kr/3d6b649892bb4190a561f46c7f7bfccf
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 기존에 유사한 질문이 있었던 것 같은데 아직 궁금증이 해소되지않아 질문드립니다! [기본] 시간복잡도 강의에서 @2:21부분에 총 시간복잡도가 5n+30ns라고 하셨는데 제가 생각했을때는 3ns + 3ns + 3n ns + 2n ns + 27ns = 5n ns+ 33 ns가 맞는것 같은데 왜 5n+30ns인지 잘 모르겠습니다!
안녕하십니까 큰돌님 vector<int> s {10, 30, 20, 20, 40, 40, 40, 50, 10, 20, 30}; unique(s.begin(), s.end()); 하면 결과가 10 30 20 40 50 10 20 30 10 20 30 이렇게 나오는데 궁금한게 첨부한 사진처럼 20 20 비교하면 중복되니까 뒤에 20이 날라가면서 앞에 남아있는 20과 다음 숫자 40을 비교하는 거죠 ?? 아니면 설명이 날라간다는 표현인 거고 20 20 40 있을 때 20 (20 40) 이렇게 비교되는 건가요 ??
http://boj.kr/5f5e386ecfea43bd920db4389b6a16fd 안녕하세요 강사님! 해당 문제 예제는 모두 맞는데... 강사님 코드까지 확인해봤는데 로직이 크게 다른 것 같지는 않아서 계속 제 코드로 시도해보고 있는데 혹시 어떤 부분이 문제일지 봐주실 수 있을까요..?
03-03번의 '최대 매출' 문제에서 슬라이딩 윈도우를 사용하실 때, 총 7개 중에서 4개씩 연속해서 옆으로 이동하실 때는, 처음 for문에서 4개의 연속된 값을 넣으셨습니다. ex) 1,2,3,4,5,6,7 이라면 첫 for문에서는 1,2,3,4 하지만 이번 문제에서는 7개 중에서 4개씩 연속해서 옆으로 이동하실 때는 첫 for문에서는 3개만 일단 넣고 시작하셨는데요. ex) 1,2,3,4,5,6,7 이라면 첫 for문에서는 1,2,3 이렇게 처음 for문에서의 연속된 값의 개수가 다른 점이 문제마다 의도가 다 다르기 때문에 다른 것이 맞나요? 문제마다 유연한 사고를 하기 위한 조언을 구하고 싶습니다 ㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 답은 올려주셔야하는거 아닐까요? 디스코드 채널들어가도 다른 문제에 대한 코드 공유 밖에 없는 거같아서요
항상 양질의 강의/컨텐츠를 지속적으로 제공해주셔서 정말 감사하다는 말씀을 먼저 드리고 싶습니다! 다름이 아니라, 맞은 문제에 대한 공부 방법에 대한 공부방법 을 질문드리고 싶어서 (질문 전에 먼저 검색해봤는데, 따로 질문글이 없는 것 같아) 게시판에 글을 쓰게 됐습니다. 현재 2주차까지 35문제 풀었고, 각 문제는 약 2시간내로 풀었는데, 해설강의를 어떻게 활용하면 좋을지(효율적일지) 강사님의 지혜를 구하고 싶습니다. 맞은 문제라도 강의와 해설코드를 보면서 저와 다른 점을 공부하고 넘어가는 게 좋을지, 아니면 다음 주차 개념강의를 보고 다음 주차 문제를 한 문제라도 더 고민하고 푸는 게 좋을지 고민하고 있습니다. (현재 채용과정 중인 기업은 없고, 지원서를 넣은 기업도 없는 상황이라 시간 자체는 있는 상황 입니다 ㅎㅎ ㅠ) 장마철인데 항상 건강하시길 바랍니다! :D
import java.util.*; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); int N = kb.nextInt(); int [][] input = new int[N][5]; for (int i = 0; i < N; i++) { for (int j = 0; j < 5; j++) { input[i][j] = kb.nextInt(); } } int answer = solution(N, input); System.out.println(answer); kb.close(); } private static int solution(int N, int[][] grid) { int answer = -1; int max = -1; for (int stdnt = 0; stdnt < N; stdnt++) { int count = 0; for (int i = 0; i < 5; i++) { int classNum = grid[stdnt][i]; for (int j = 0; j < N; j++) { if ( grid[j][i] == classNum ) { count++; } } } if ( count > max) { max = count; answer = stdnt; } } return answer+1; } } 테스트케이스 많이 넣어봤는데, 오답케이스를 못찾겠습니다. 여러명일때 작은 번호 출력하는것도, 하고 여러가지 넣어봤는데 잘 안되네요 ㅠ
안녕하세요 강사님. "몇분 뒤에 구름이 뜰지" 라는 대목에서 거리라고 판단해서 한 방향으로 진행되는 bfs로 문제를 풀었습니다. 2차원 배열이 각각 100으로 최대 10000의 시간복잡도라 해당 문제에서는 큰 문제가 없었는데요. 만약 범위가 좀 크다면 큐를 사용한 bfs 탐색이 강사님 풀이보다 성능이 떨어질까요? http://boj.kr/a2429464a2434d418885752a322f7880
2-b질문입니다. 1.2분 29초에 y가 가로이고 x가 세로라고 하셨는데 그걸 어떻게 알아요? 2.사진에서 n이 10이고 m이 8로 받아져있는데요. 왜 y가 10까지 돌아야 하는데 왜 8에서 멈추나요? import sys sys.stdin = open('input.txt', 'r') from collections import deque testcase=int(input()) n,m,k=map(int,input().split()) # print(n,m,k) # grid=[list(map(int,input().split())) for _ in range(m)] grid2=[[0]*n for _ in range(m)] visited=[[0]*n for _ in range(m)] for _ in range(k): x,y=map(int,input().split()) grid2[y][x]=1 # for i in range(m): # print(grid2[i]) dxs=[-1,0,1,0] dys=[0,-1,0,1] Q=deque() def in_range(x,y): return 0<=x and 0<=y and x<n and y<n for y in range(n):#가로 for x in range(m):#세로 if grid2[y][x]==1: if visited[y][x]==0: Q.append((y,x)) visited[y][x] = 1 while Q: y,x=Q.popleft() for dx,dy in zip(dxs,dys): nx=dx+y ny=dy+x if not in_range(ny,nx): continue if visited[ny][nx]==1: continue if visited[ny][nx]==0 and grid2[ny][nx]==1: visited[ny][nx] =1 for i in range(m): print(visited[i])