inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

강의 공부 순서

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님 이번에 처음 구매했는데, 공부순서를 어떻게 하면 좋을까요 ? 교안을 먼저 보고 교안에 있는 내용들을 충분히 숙지한 후에 동영상강의를 듣는게 맞을까요? 그리고 저는 C를 어느정도 공부한 후 C++은 문법만 살짝 맛봤는데, 강의 내용이 처음부터 알고리즘에 관한 내용이 나와서 어려운 부분이 꽤 많습니다 ㅠㅠ 추천해주실만한 공부순서 있으면 부탁드립니다.

  • c++
  • 코딩-테스트
김동희 댓글 3 좋아요 1 조회수 484

외부 네트워크에서 접속에 대한 질문이 있습니다 !

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동

안녕하세요 RooKiss님 항상 좋은 강의 올려주셔서 감사합니다..! 외부 네트워크 환경의 제 친구에게 언리얼 클라이언트를 보내준 뒤, 강의를 들으며 쌓아 올린 제 서버에 연결을 하려고 했는데, 서버 소스의 IP 주소 입력란에 127.0.0.1이 아니라 제 외부(공인)IP 주소를 입력하니 예외를 던지면서 서버 프로그램이 죽더라구요.. 제 소스 문제인가 싶어서 선생님께서 올려주신 서버 소스에도 제 외부 IP 주소를 입력해봤는데, 여기서도 예외를 던지며 프로그램이 죽었습니다. 혹시나 싶어 사설 IP주소를 입력했을 때는 서버프로그램이 죽진 않았지만, 클라 쪽에서 접속할 수 없었습니다. 포트포워딩도 해놓았습니다. 서버 소스에 문제가 있는 건가요? 아니면 외부 네트워크에서 클라이언트를 접속 받는 방법에 대해 제가 잘못 이해하고 있는 걸까요?

  • c++
  • unreal-engine
  • windows-server
차근차근 댓글 1 좋아요 0 조회수 362

질문있습니다.

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

안녕하세요. 질문 1. 실무에서 int number = 1; int* pointer = &number; *pointer = 1; 둘 중 어느 형식을 많이 쓰나요? 질문 2. 실제 포인터를 매개변수로 담는 함수와 레퍼런스를 매개변수로 담는 함수 중 실무에서 무엇을 더 많이 쓰나요?

  • c++
최창우 댓글 2 좋아요 0 조회수 272

Thread Block 개수에 제한이 있나요?

해결됨

CUDA 프로그래밍 (2) - C/C++/GPU 병렬 컴퓨팅 - 벡터 vector 더하기

안녕하세요 저번 Vector Addition 수업에서는 256M(256 x 1024 x 1024)개의 연산을 수행하기 위해서 <<<256*1024, 1024>>>로 커널을 런치하여 Block의 개수에는 제한이 없는 것 처럼 보였는데, 15-5강의에서는 SM의 Thread Block은 32개 까지 가능이라고 하셔서 헷갈리는데 두 개의 Thread Block 개념이 다른 것인지 궁금합니다.

  • c
  • c++
  • cuda
  • gpu
  • 병렬-처리
OpenJR 댓글 1 좋아요 0 조회수 439

Warp를 동시에 돌린다는 말이 이해가 가지 않습니다.

해결됨

CUDA 프로그래밍 (2) - C/C++/GPU 병렬 컴퓨팅 - 벡터 vector 더하기

안녕하세요. 먼저 좋은 CUDA 강의를 제공해주셔서 감사합니다. 다름이 아니라 15-4 강의에서 Warp를 동시에 돌린다는 말에 질문이 있습니다. Warp 스케줄링을 저는 아래와 같이 비교하여 이해하였습니다. CPU: Core -> 여러개의 쓰레드 GPU: SM -> 여러개의 Warp 강의 내용처럼, CUDA에서 Warp별로 스케줄링을 관리를 한다면 모든 SP의 Clock들이 같은 Instruction을 수행(SM내 SP들의 Clock들은 Sync가 맞음)하여야 Warp단위로 스케줄링이 가능할 것 같은데, 제 생각이 맞는지 궁금합니다. 감사합니다.

  • c
  • c++
  • cuda
  • gpu
  • 병렬-처리
OpenJR 댓글 1 좋아요 0 조회수 336

7-S 시간초과 질문드립니다 !!

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강사님 강의 잘 듣고 잇습니다. 강평 별5개 드렸습니다 항상 감사합니다 ^^ 강의도 들어보았고, 제가 작성한 코드와 로직은 같은 것이라고 저는 생각하는데.. 제출시 시간초과가 떠서요.. 무엇이 잘못됫는지 여쭙고 싶습니다. 감사합니다. #include <bits/stdc++.h> using namespace std; string S; bool DP[2505][2505]; // 시작과 끝에 대한 팰린드롬 문자열의 길이 int DP2[2505]; #define INF 987654321 bool go(pair<int, int> Q){ if (Q.first >= Q.second){ return true; } bool& ret = DP[Q.first][Q.second]; if(ret) return ret; if (S[Q.first] == S[Q.second]){ ret = go({Q.first+1, Q.second-1}); } return ret; } int go2(int here){ if(here >= S.size()) return 0; int &ret = DP2[here]; if(ret != INF) return ret; for(int i = here; i < S.size(); ++i){ if (DP[here][i]){ ret = min(ret, go2(i+1)+1); } } return ret; } int main(){ cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false); cin >> S; for(int i =0 ; i < S.size(); ++i){ DP[i][i] = 1; for(int j = i+1; j < S.size(); ++j){ go({i,j}); } } fill(DP2, DP2+2505, INF); cout << go2(0); return 0; }

  • c++
  • 코딩-테스트
윽쓰욱스 댓글 1 좋아요 0 조회수 230

include header

미해결

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

안녕하세요 선생님 ㅜㅜ 선생님 코드 짜시는거 보면 막 새로운 클래스를 생성하시구 나서 막 Types.h, enums.h Defines.h에 정의되어있는 것들을 그냥 입력해도 아무 에러가 안 뜨던데 저는 그것들 #include 안해주면 정의 안되어있는거 쓴다구 겁나 꼽주는데 따로 설정법이 있는건가요,,? ㅜㅜ

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
  • windows-api
화사한 알파카 댓글 1 좋아요 0 조회수 302

질문이 있습니다.

해결됨

스스로 프로그래밍 하는 능력을 키우는 C++

LV05 Char, 함수, 지역변수, 전역변수 파트에서 문제 13번에 원래의 하드코딩 배열이 따로 보여지지 않아서 예시의 이해가 조금 안되고 있어서요 원래 의도하신 배열이 무엇이였는지 알 수 있을까요?

  • c++
gmjjb0309 댓글 1 좋아요 0 조회수 256

3-D 메모리초과 질문있습니다

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

#include <bits/stdc++.h> using namespace std; int R, C, fire_visitied[1000][1000]={0,}, jihoon_visitied[1000][1000]={0,}; int dy[4]={-1,0,1,0}, dx[4]={0,1,0,-1}; char arr[1000][1000]={0,}; pair<int,int> jihoon, fire; vector<pair<int,int>> fire_v; void fire_bfs(int y, int x){ queue<pair<int,int>> que; fire_visitied[y][x]=1; que.push({y,x}); while(que.size()){ pair<int,int> temp=que.front(); que.pop(); for (int i=0;i<4;i++){ int ny=temp.first+dy[i]; int nx=temp.second+dx[i]; if (ny<0||nx<0||ny>=R||nx>=C) continue; if (arr[ny][nx]=='#'||(fire_visitied[ny][nx]&&(fire_visitied[ny][nx]<fire_visitied[temp.first][temp.second]+1))) continue; fire_visitied[ny][nx]=fire_visitied[temp.first][temp.second]+1; que.push({ny,nx}); } } } int jihoon_bfs(int y, int x){ queue<pair<int,int>> que; jihoon_visitied[y][x]=1; que.push({y,x}); while(que.size()){ pair<int,int> temp=que.front(); que.pop(); for (int i=0;i<4;i++){ int ny=temp.first+dy[i]; int nx=temp.second+dx[i]; if (ny<0||nx<0||ny>=R||nx>=C) return jihoon_visitied[temp.first][temp.second]; if (jihoon_visitied[ny][nx]||arr[ny][nx]=='#') continue; if (jihoon_visitied[temp.first][temp.second]+1>=fire_visitied[ny][nx]) continue; jihoon_visitied[ny][nx]=jihoon_visitied[temp.first][temp.second]+1; que.push({ny,nx}); } } return 0; } int main() { cin >> R >> C; for (int i=0;i<R;i++){ for (int j=0;j<C;j++){ cin >> arr[i][j]; if (arr[i][j]=='J') jihoon={i,j}; if (arr[i][j]=='F') fire_v.push_back({i,j}); } } if (!fire_v.size()) fill(&fire_visitied[0][0],&fire_visitied[0][0]+1000*1000,INT_MAX); for (auto i:fire_v) fire_bfs(i.first,i.second); int answer=jihoon_bfs(jihoon.first,jihoon.second); if (answer) cout << answer; else cout << "IMPOSSIBLE"; } 위 코드에서 메모리 초과가 납니다. 초기의 모든 불의 위치를 큐에 담아서 bfs 를 하는 것을 생각하지 못해 모든 불을 돌면서 bfs를 하도록 코딩했습니다. if (arr[ny][nx]=='#'||(fire_visitied[ny][nx]&&(fire_visitied[ny][nx]<fire_visitied[temp.first][temp.second]+1))) continue; 이 라인을 통해서 fire 배열의 중복을 막은 것 같은데 왜 메모리초과가 나는지 모르겠습니다. 알려주시면 감사하겠습니다 ㅠ

  • c++
  • 코딩-테스트
JOXXEP 댓글 1 좋아요 0 조회수 167

7 - C 질문

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

dfs 방식으로 풀었는데 메모리초과가 발생해 질문드립니다. 재귀함수이다보니 함수호출이 잦아 발생하는거 같은데, 해당 위치에서, 해당 위치에 도달하는 경로 중 가장 많이 이동한 경로만을 탐색하는 방식으로 진행했음에도 불구하고 메모리초과가 발생하다보니 어디가 문제인지 모르겠어서 질문드립니다 ㅜㅜ... #include <bits/stdc++.h> using namespace std; enum { E, S, W, N, }; // moves : 해당 위치에 도착했을 때, 지금까지 내가 몇번 움직였는지를 저장한다. int table[51][51], moves[51][51]; int n, m; int dy[4] = {0,1,0,-1}, dx[4] = {1,0,-1,0}; // dfs, 이동 가능한 방향으로 이동하는 함수 void go(int fy, int fx, int y, int x, int cnt) { // 움직인 횟수 저장 moves[y][x] = cnt; for(int i = E; i < N; i++) { int ny = y + dy[i]*table[y][x], nx = x + dx[i]*table[y][x]; // 최대 횟수로 이동한 경로만 통과 가능 if(ny < 0 || nx < 0 || ny >= n || nx >= m || table[ny][nx] == 0 || cnt + 1 < moves[ny][nx]) continue; // 무한 루프에 빠지게 될 경우, 탈출 if(fy == ny && fx == nx) { exit(0); } go(y, x, ny,nx, cnt + 1); } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { char tmp; cin >> tmp; if(tmp == 'H') { tmp = '0'; } table[i][j] = tmp - '0'; } } go(0,0,0,0,1); cout << *max_element(moves[0], moves[0] + 51*51); return 0; }

  • c++
  • 코딩-테스트
eogmlrhtn 댓글 2 좋아요 0 조회수 209

오큰수 질문

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 큰돌님 강의 잘 듣고 있습니다 혹시 오큰수 문제가 2주차 그래프이론, DFS, BFS에 분류된 이유가 뭘까요?? 풀이 방법은 스택인데 그래프에 분류된 이유가 궁금합니다 :)

  • c++
  • 코딩-테스트
로켓라쿤 댓글 2 좋아요 0 조회수 229

전투게임

미해결

코딩테스트 실전 모의고사(with C++) : 대기업 대비

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 자바로 작성했는데, 시간 초과가 납니다. 어느 부분이 잘 못 작성한건지 궁금합니다. import java.io.*; import java.util.*; class Node implements Comparable<Node>{ int idx; char team; int power; Node(int idx, char team, int power){ this.idx = idx; this.team =team; this.power = power; } @Override public int compareTo(Node o) { return this.power - o.power; } } public class Main { public static void main(String[] argvs) { Scanner sc = new Scanner(System.in); int n=sc.nextInt(); int[] answer = new int[n+1]; ArrayList<Node> list = new ArrayList<>(); for(int i=1; i<=n; i++) { char a = sc.next().charAt(0); int b=sc.nextInt(); list.add(new Node(i,a,b)); } Collections.sort(list); //정렬 HashMap<Character, Integer> map = new HashMap<>(); int j=0,total=0; for(int i=1; i<n; i++) { for(;j<n; j++) { if(list.get(j).power<list.get(i).power) { total+=list.get(j).power; //쫓아오는 학생의 파워를 누적합 char x =list.get(j).team; //쫓아오는 학생의 팀을 표시 map.put(x, map.getOrDefault(x, 0)+list.get(j).power); //해싱해준다. } else break; } answer[list.get(i).idx] = total - map.getOrDefault(list.get(i).team, 0); //전체 누적합에서 자신의 팀이 있다면 그 점수는 빼준다. } for(int i=1; i<=n; i++) System.out.println(answer[i]); } }

  • c++
  • 코딩-테스트
xogh7532 댓글 1 좋아요 0 조회수 192

1-H 2559번 질문있습니다!

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님 😃 누적합 관련해서 질문있습니다. 아래 글은 이전에 누적합 관련해서 이러한 로직을 사용하는 것은 어떤지 질문을 드렸던 글입니다. https://www.inflearn.com/questions/1233619/1%EC%A3%BC%EC%B0%A8-%EA%B0%9C%EB%85%90-9-%EB%88%84%EC%A0%81%ED%95%A9-%EC%A7%88%EB%AC%B8%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4 위의 로직을 사용해서도 문제를 풀어봤는데요, 테스트 케이스에서는 정답이었지만, 백준에 제출했을 때는 오답처리가 되어 무엇이 잘못된 것인지 잘 모르겠어서 질문드립니다. http://boj.kr/e912454a40e7424d98eccf86d7506db2

  • c++
  • 코딩-테스트
한유태 댓글 1 좋아요 0 조회수 242

1-G 9996번 재질문입니다!

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님 :) 선생님께서 푸신 풀이에서 하나를 입력하면 그에 대한 출력이 바로 나오는 것이 마음에 들지 않아서 모든 입력을 넣어야 출력이 나오도록 코드를 변경해보려고 했습니다. vector 컨테이너를 사용해서 입력된 문자열들을 컨테이너에 담고, 인덱스에 알맞는 문자열을 꺼내와서 DA인지 NE인지 출력해보려고 했는데요, 자꾸 vector out of range 에러가 나옵니다. 왜 범위를 벗어난건지 모르겠어서 질문드립니다 ㅠㅠ http://boj.kr/bc2da3a3773c401086b47cf818e8c0f1

  • c++
  • 코딩-테스트
한유태 댓글 2 좋아요 0 조회수 191

숲속의 기사

미해결

코딩테스트 실전 모의고사(with C++) : 대기업 대비

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 예제는 통과해서 제출하니까 시간초과라고 뜨는데, 잘못 작성한건 가요?? import java.io.*; import java.util.*; public class Main { public static void main(String[] argvs) { Scanner sc = new Scanner(System.in); int[] dx = {0,0,1,-1}; int[] dy = {1,-1,0,0}; Queue<int[]> q = new LinkedList<>(); int n=sc.nextInt(); int m=sc.nextInt(); int[][] map = new int[m][n]; for(int i=0; i<m; i++) { for(int j=0; j<n; j++) { map[i][j]=sc.nextInt(); } } boolean[][] visit = new boolean[m][n]; int[][] dist = new int[m][n]; for(int i=0; i<m; i++) { for(int j=0; j<n; j++) { if(map[i][j]==2 || map[i][j]==3) { q.add(new int[] {i,j}); int L=0; visit = new boolean[m][n]; visit[i][j]=true; while(!q.isEmpty()) { int len = q.size(); L++; for(int k=0; k<len; k++) { int[] tmp = q.poll(); for(int z =0; z<4; z++) { int nx = tmp[0]+dx[z]; int ny = tmp[1]+dy[z]; if(nx>=0 && ny>=0&& nx<m && ny<n && map[nx][ny]!=1) { if(!visit[nx][ny]) { visit[nx][ny]=true; dist[nx][ny]+=L; q.add(new int[] {nx,ny}); } } } } } } } } int answer=Integer.MAX_VALUE; for(int i=0; i<m; i++) { for(int j=0; j<n; j++) { if(map[i][j]==4 && dist[i][j]>0) { answer = Math.min(answer, dist[i][j]); } } } System.out.print(answer); } }

  • c++
  • 코딩-테스트
xogh7532 댓글 1 좋아요 0 조회수 160

멀티태스킹 질문드립니다.

미해결

코딩테스트 실전 모의고사(with C++) : 대기업 대비

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 자바로 작성해서 예제는 맞게 나오는데, 제출하니까 틀렸다고 나옵니다. 어디가 잘못 된걸까요?? import java.io.*; import java.util.*; public class Main { public static void main(String[] argvs) { Scanner sc = new Scanner(System.in); int n=sc.nextInt(); int[] num = new int[n+1]; int[] st = new int[n+1]; for(int i=1; i<=n; i++)num[i]=sc.nextInt(); int k=sc.nextInt(); for(int i=1; i<=n; i++) st[i] = num[i]; Arrays.sort(st); int rest=num.length; //처리해야 할 작업 개수 for(int i=1; i<st.length; i++) { long time=((long) rest * (st[i] - st[i-1])); //몇번의 회전에 해당 작업이 끝나는가 if(time>k) { long idx= k%rest; //어디서 멈춰야하는지 구하는 변수 int cnt=0; for(int j=0; j<num.length; j++) { if(num[j]>=st[i]) { if(cnt==idx) { System.out.print(j); System.exit(0); } cnt++; } } } else { k-=time; rest--; } } System.out.print(-1); } }

  • c++
  • 코딩-테스트
xogh7532 댓글 1 좋아요 0 조회수 213

질문사항 있습니다..동작을 안하고 있어요..

미해결

[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문

fun.cpp 를 만든 뒤에는 indef.cpp(main.cpp 역할) 가 동작을 안하고 있는 상태입니다. undefined reference to 'display(MyStruce&)' 라는 오류가 뜨고 있습니다.. indif.cpp #include "struct.h" /* 1. 함수 원형 2. #define 이나 const를 사용하는 기호 상수 3. 구조체 선언 4, 클래스 선언 5. 탬플릿 선언 6. 인라인 함수 */ int main() { MyStruct PenguinCoding = { "Penguin", 26, }; display(PenguinCoding); return 0; } fun.cpp #include "struct.h" void display(MyStruct& temp) { cout << "이름 : " << temp.name << endl; cout << "나이 : " << temp.age << endl; } struct.h #ifndef STRUCT_H #define STRUCT_H #include <iostream> //헤더 파일을 여러 파일에 포함시킬 때에, //반드시 단 한 번만 포함시켜야 한다. using namespace std; struct MyStruct { string name; int age; }; void display(MyStruct& temp); #endif 분명 정상적으로 따라가고 있었다고 생각했는데 어디에서 문제가 되는지 모르겠습니다..

  • c++
gmjjb0309 댓글 2 좋아요 0 조회수 364

4-H 질문있습니다.

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

선생님과 비슷하게는 풀었는데 70%쯤 가서 오답이라고 뜹니다. 어디가 틀린건지 도저히 모르겠습니다 https://www.acmicpc.net/source/77016787

  • c++
  • 코딩-테스트
GRstory 댓글 2 좋아요 0 조회수 176

temp질문

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

제가 이해하고있는게 맞나해서 강의 듣고 질문드립니다EnterLobby()함수에서Statinfo player라는 지역변수를 할당하고그 player라는 값안에다가 CreatePlayer()의 값을 넣는데 여기서 CreatePlayer()함수의 내부코드는마찬가지로 지역변수 ret생성후 ret.hp.. 이렇게 값을 할당해서 그값들을 리턴해주는데 그 리턴되는 값들이 바로 player값에 들어가는게 아니라 EnterLobby()함수에 지역변수(player와 temp?라는 메모장같은 변수가 있다고 할때)ret값이 temp에 옮겨지고 그 temp값이 player로 들어가는 과정이 맞는지 질문드립니다temp가 생성되는 이유하고 시점을 모르겠어서 정확히 이해한건지 모르겠네요그리고 또 하나 질문이 있는데temp라는건 저희가 알아듣기 편하게 임의로 지정한 변수 이름인건가요? 사실상 스택프레임의 할당된 어느 구역일 뿐인지 궁금합니다

  • c++
킴주니 댓글 1 좋아요 0 조회수 187

강의 8:07 질문

해결됨

홍정모의 따라하며 배우는 C++

안녕하세요. 8:07에서 반환값의 자료형이 int&이니 getValue 함수 안의 value를 선언할 때도 int&로 선언해야 하는 것 아닌가요? 즉, 함수의 반환값과 변수의 자료형을 맞춰야 하는 것이 아닌지 궁금합니다.

  • c++
열공! 댓글 1 좋아요 2 조회수 227

인기 태그

인프런 TOP Writers

주간 인기글