묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
임시반장문제 오답케이스를 모르겠습니다.
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; } }테스트케이스 많이 넣어봤는데, 오답케이스를 못찾겠습니다.여러명일때 작은 번호 출력하는것도, 하고 여러가지 넣어봤는데 잘 안되네요 ㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-k 질문
안녕하세요 강사님."몇분 뒤에 구름이 뜰지" 라는 대목에서 거리라고 판단해서 한 방향으로 진행되는 bfs로 문제를 풀었습니다.2차원 배열이 각각 100으로 최대 10000의 시간복잡도라 해당 문제에서는 큰 문제가 없었는데요.만약 범위가 좀 크다면 큐를 사용한 bfs 탐색이 강사님 풀이보다 성능이 떨어질까요? http://boj.kr/a2429464a2434d418885752a322f7880
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-G 질문입니다.
안녕하세요 강사님.pair를 사용하지 않고 풀어보려고 했습니다.TC는 통과하는데 틀리다고 나오네요.피드백 가능할까요? http://boj.kr/9f1f4e5b3eed497997feb57514fe3bcf
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
4-나이차이 문제 질문드립니다
선생님 저는 입력받을 정수를 동적할당시켜 정수의 배열을 사용해서 정렬을 시키고 나이차이를 출력했는데 이때는 input.txt를 어떻게 사용하는지 잘 모르겠어서 질문드렸습니다! 참고로 제가 쓰는것은 visual studio 2022버전입니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-b질문입니다.
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])
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2 - D 입력질문드립니다.
안녕하세요.2583번 문제에서 예제가 왜5 7 3 0 2 4 4 1 1 2 5 4 0 6 2이렇게 받는지 잘 모르겠습니다ㅠㅠ그리고for(int i = 0; i < k; i++) { cin >> x1 >> y1 >> x2 >> y2; for(int x = x1; x < x2; x++) { for(int y = y1; y < y2; y++) { a[y][x] = 1; } } }cin 으로 x1 y1 x2 y2 받는 줄 아래에왜 x가 x2랑 엮이고 y가 y2랑 엮이는지 잘 모르겠습니다ㅠㅠ 문제 풀기전에 예제입력&예제출력이 왜 이렇게 나오나 먼저 좀 생각을 해보고 코드 작성하는데 한참을 들여다 봤는데 잘 이해가 안되니 도저히 감이 안와서 이렇게 여쭙니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런방식으로 푸는게 더 깔끔한가요?
/* * 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요. 단, 첫 번째 수는 무조건 출력한다. */ function solution(integers:number[]): number[] { return integers.filter((int, index) => { if (index === 0) { return int; } if (int > integers[index - 1]) { return int; }; }); } console.log(solution([7,3,9,5,6,12]));
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
기본코드가 어디있나요?
강의에서 보여주는 기본코드가 어디있나요?따라써야하는건가요?포함된 파이썬 파일에는 답이 다 작성되어있어서요...
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
13번 0점...
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. #include <iostream>int arr[10];int main(){ //freopen("input.txt.txt","rt",stdin); char num[101]; int i; int tmp; int max = 0; int Smax; scanf("%s", &num); for(i=0; num[i]!= '\0'; i++) { tmp = num[i] - 48; arr[tmp]++; } for(i=0; i<10; i++) { if(arr[i]>=max) { max = arr[i]; Smax = i; } } printf("%d\n",Smax); return 0;} 왜 빵점만 나오는 거죠? 어디가 틀린 건가요ㅠㅠ?
-
미해결코딩테스트 [ ALL IN ONE ]
[코테 적용] 반복문 강의에서
안녕하세요. [코테 적용] 반복문 강의에서 변수 Run하실때 오른쪽하단에 디버그 문양이 있는걸 누르시고 왼쪽상단에 변수에 대해 뜨는데 window에서 pycharm으로 해당 방법을 따라하고 싶은데 어떻게 해야 할까요?감사합니다.
-
해결됨입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
두 수의 합 O(n) 문제에 관한 질문입니다.
강사님을 다른 곳에서 뵌 후에 이곳에서 뵈니 감회가 새롭습니다.코딩 테스트를 파이썬으로 치뤄보고자 파이썬을 열심히 공부 중입니다. 당연히 자바도 빼놓지 않겠습니다.두 수의 합 O(n) 문제에서 저는 이렇게 풀었는데, 강사님께서 푸신 것에 비해 시간복잡도가 어느정도 차이가 나는지 궁금합니다.다음은 해당 코드 블럭입니다.def solution(nums, target): answer = [0] * 2 num_dict = dict() for x in nums: num_dict[x] = target - x if x in num_dict.values(): answer[0] = x answer[1] = target - x return sorted(answer)감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교안 30쪽 getline 질문이 있습니다.
string bufferflush;getline(cin, bufferflush);이 부분에서 질문이 있는데요. 이 부분을 제가 이해하기로는 cin을 수행할 때 \n부분 전까지만 입력을 받고 변수에 할당한 후 \n은 그대로 cin 입력 버퍼에 남기 때문에 저걸 없애기 위해서 string bufferflush를 선언한 후 getline(cin, bufferflush)를 수행한다고 이해가 되는데요. 제가 알기로는 cin.ignore()도 입력 버퍼를 한 개 지우는 역할을 한다고 들었는데 그냥 cin.ignore()로 대체하면 두 줄짜리 코드를 그냥 간단하게 한 줄로 끝낼 수 있는데 이게 더 효율적이지 않나 싶어서 질문을 드립니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
시간과 점수 변수를 넘길 때 선언과 동시에 더한 값을 넘기게 되면 어떻게 되나요 ??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. static void DFS(int level, int time, int score, Exam[] arr) {if(time > m) return; if(level == n) {if(time <= m) {answer = Math.max(answer, score);}}else {DFS(level+1, time+=arr[level].time, score+=arr[level].point, arr);DFS(level+1, time, score, arr);}} else 부분에 time+= arr[level].time 처럼 선언과 동시에 더한 값을 메소드에 넘기게 되면 time 값이 가장 마지막으로 선언 된 time 값으로 고정이 되어 이전 값으로 안 돌아오게 되나요 ?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
22. 때때로 time limit
같은 코드인데, 한번은 array(배열)로, 한번은 vector로 두었습니다.array로 했을 때는 4번예제에서 time_limit이 났는데 vector로 했을 때는 다 success였습니다. 같은 경우엔 array가 더 빠른거 아닌가요? 왜 이러죠#include <iostream> #include <vector> int main(void) { int n, k, max, sum = 0; std::vector<int> tem(100001); scanf("%d %d", &n, &k); tem[0] = 0; for (int i = 1; i <= n; i++) { scanf("%d", &tem[i]); sum += tem[i]; if (i == k) max = sum; else if (i >= k) { sum -= tem[i - k]; if (sum > max) max = sum; } } printf("%d", max); return 0; }#include <iostream> int main(void) { int n, k, max, sum = 0; int tem[100001]; freopen("input.txt", "rd", stdin); scanf("%d %d", &n, &k); tem[0] = 0; for (int i = 1; i <= n; i++) { scanf("%d", &tem[i]); sum += tem[i]; if (i == k) max = sum; else if (i >= k) { sum -= tem[i - k]; if (sum > max) max = sum; } } printf("%d", max); return 0; }
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
어떤 부분이 오답인지 궁금합니다
import java.io.*; public class Main { public int solution(int n) { int answer = 0, sum = 0, lt = 0; for (int rt = 0; rt <= n/2+1; rt++) { sum += rt; if (sum == n) answer++; while (sum >= n) { sum -= lt++; if (sum == n) answer++; } } return answer; } public static void main(String[] args) throws IOException { Main main = new Main(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); System.out.print(main.solution(n)); } } 따로, n/2+1 크기만큼의 배열을 생성해주지 않는 풀이인데, 어느 부분이 잘못되서 오답처리가 되는 것인지 잘 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
pushback과 dy,dx 질문입니다.
안녕하세요.질문 하나가 있습니다.adj[0].push_back(1); adj[0].push_back(2); adj[0].push_back(3);만약 위 코드 처럼 push_back 해준다고 가정했을 때int dy[] = {-1,0,1,0}; int dx[] = {0,1,0,-1};위 dy dx코드를 해줄 필요가 없는건가요?연습할 때 .push_back(i)로 하다가 dfs bfs연습문제 풀 때 dy dx가 나와서 뭐지? 했습니다.어느 상황에서 맨위 코드블럭처럼 해줘야 하는지 아래 코드블럭처럼 하는지 잘 분간이 안되서 이렇게 질문드립니다.감사합니다. ps. 5 51 1 0 0 10 0 1 1 00 1 0 0 1이런식의 예제입력이 주어지면 push_back안 하고 dy dx만 해주면 되는걸까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요. 강사님.이런 느낌으로 팰린드롬 변환을 구현해봤습니다.사실 문자열 최대길이가 50이라서 시간복잡도 문제는 없을거라 생각하는데요.삽입을 사용안하고 풀어보려고 했는데 reverse도 결국 O(N)이라서 유의미한 차이는 없는거 같습니다.실제로 중간 삽입, reverse도 중간부분을 뒤집는거라 같은 시간복잡도가 예상되는데 맞을까요?http://boj.kr/6889e519af6742b9a6cda67803fbf013
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션5 연속부분수열1 (Two Pointers Algorithm) 질문있습니다.
강사님이 작성해주신 코드를보면 for문안에 while문을 돌려서 시간복잡도가 O(n^2) 아닌가요?이렇게하면 시간복잡도가 O(n)이라서 아래의 코드가 더 좋은것 아닌가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8주차 개념 강의 중 질문입니다.
강사님 안녕하세요,8주차 개념강의 중 질문입니다.[알고리즘 강의] 8주차. 펜윅트리와 최단거리.. : 네이버블로그 (naver.com)강의 노트 웹페이지에 2번째 그림에서,"2~8 까지의 최소인덱스 3번째 4번째 6번째 인덱스만 비교해서 최소 인덱스를 반환" 이라는 말이 잘 이해가 안되어서요.그림상 파란 화살표 표시한 것이 3,4,6 인덱스를 의미 하는 것인지 그리고, 3,4,6째 인덱스를 비교한다는 것이 왜 필요한 것인지 궁금합니다.제가 이해한 것은 2~8 까지의 최소 인덱스는 Level 1 에 저장된 Index 3 만 확인하여 Index 3 에 위치한 "1" 이 최소값인 것으로 이해를 했거든요. 강의 노트 웹페이지에서 5번째 그림에서,파랑 노드를 만들면 된다고 갑자기 설명을 하시는데, (강의 3:03 구간)그림상 주황색 노드(3,4,10,11)의 의미, 파랑색 노드(1,2,3,4)의 의미에 대한 안내도 없고... 그림에 표시된 화살표도 어떤 연산이 수행되었고, 화살표로 연결된 두 노드의 관계에 대한 설명도 없어 이해가 되지 않습니다.관련 내용 상세 설명 좀 다시 부탁드리겠습니다.
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
40번 교집합 문제
#include <iostream> using namespace std; int main() { int i, j, tmp, a[30001],a1, b[30001],b2, c[30001], cnt=0; cin >> a1; for (i = 0; i < a1; i++) { cin >> a[i]; } cin >> b2; for (i = 0; i < b2; i++) { cin >> b[i]; } for (i = 1; i < a1; i++)//a { tmp = a[i]; for (j = i - 1; j>0 ; j--) { if (a[j] > tmp) { a[j + 1] = a[j]; } else { break; } //조건에 안맞으면 바로 밑으로 넘어가게 해야한다. } a[j + 1] = tmp; } for (i = 1; i < b2; i++)//b { tmp = b[i]; for (j = i - 1; j > 0; j--) { if (b[j] > tmp){ b[j + 1] = b[j]; } else { break; } } b[j + 1] = tmp; } for (i = 0; i < a1; i++) { for (j = 0; j < a1; j++) { if (a[i] == b[j]) { c[i] = a[i]; cnt++; } } } for (i = 0; i < cnt; i++) { cout << c[i]; } return 0; } 안녕하세요 선생님 제가 삽입정렬 방식으로 하고 코들르 구현하였는데 출력은 -로 나옵니다.어디서 잘못된거인지를 못찾겠어서 질문 드립니다.