inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

log(2n+1) 이 아니라 log2의(2n) 아닌가요?

미해결

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

갑자기 2n+1 이 왜 나온지 모르겠습니다...

  • c++
  • C++
  • 코딩-테스트
  • 코테 준비 같이 해요!
최초로 댓글 2 좋아요 0 조회수 1016

6-B, 기타레슨

미해결

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

for(int i = 0; i < n; i++){ if(mid - a[i] < 0){ mid = temp; cnt++; } mid -= a[i]; } if(mid != temp) cnt++; 이 부분이 아무리 봐도 들어도 이해가 안됩니다...ㅠㅠ 그리고 rt를 누적합으로 둬야되는 이유도 잘 모르겠습니다. 누적합을 이분탐색으로 mid를 두는것이 크기를 정한다는 의미도 뭔가 와닿지 않습니다..

  • c++
  • 코딩-테스트
  • C++
  • 코테 준비 같이 해요!
k1bae2301 댓글 1 좋아요 2 조회수 347

템플릿 특수화 관련 질문

해결됨

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

안녕하세요. c++ 강의 중 "템플릿 기초 #1" 듣다가 질문이 생겨 남깁니다. 템플릿 특수화가 필요한 이유를 모르겠습니다. 아래 두 코드를 비교했을 때 굳이 템플릿 특수화를 해야 하는 이유가 무엇인가요? 또, 템플릿 특수화가 필요한 상황은 어떤 상황이 있나요?? <템플릿 특수화 사용한 경우> template<typename T> void Print(T a) { cout << a << endl; } template<> void Print(float a) { cout << "템플릿 특수화" <<endl; cout<< a << endl; } <오버로딩 사용한 경우> template<typename T> void Print(T a) { cout << a << endl; } void Print(float a) { cout << "템플릿 특수화" <<endl; cout<< a << endl; } 컴파일러에 돌려보니 결과도 똑같이 나옵니다. 너무너무 궁금합니다ㅠㅠ 감사합니다.

  • c++
  • C++
김퍼블 댓글 1 좋아요 0 조회수 407

현대엔지비(Softeer) 코딩 테스트 관련해서

미해결

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

Language가 GNU C++ 17인데 #include<bits/stdc++.h> 라이브러리 사용 가능한거죠??

  • c++
  • 코딩-테스트
  • C++
  • 코테 준비 같이 해요!
댓글 1 좋아요 0 조회수 936

로컬 환경과 다르게 오답이라고 나와서 문의 드립니다.

미해결

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

안녕하세요! 우선 수업 굉장히 잘 듣고 있습니다! 도움이 많이 되네요! 금일 문제를 풀고 있는데 제 로컬 환경에서는 아웃풋이 잘 나오는데 채점 사이트에서 답이 제대로 안나와서요..채점 사이트에 문제가 있는걸까요~? 어제까지는 결과가 잘 나왔었어서 로컬 환경은 바뀐게 없습니다.. 아래 문제 목록 및 현상입니다. 도움 부탁 드립니다 문제 : 5. 톰과 제리(BFS) 해당 ID : d7a123cc4487 문제 현상 : 채점 결과에 리턴값이 몇백줄 공란으로 나온 다음에 결과값이 프린트 되고 있습니다. 문제 : 4. 스도쿠(DFS 활용) 해당 ID : ce811046b640 문제현상 : 채점결과가 아예 나오지 않고 있습니다.

  • c++
  • 코딩-테스트
  • C++
  • 코테 준비 같이 해요!
diri123 댓글 1 좋아요 0 조회수 313

2-S 1325번 효율적인 해킹 문제 질문

미해결

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/d5dbeef9edfd46d4b6ca8eda86668fcd 문제는 해결했는데 궁금한 점이 생겨 질문 드립니다. 23번째 줄에서 배열 초기화 할 때 fill함수가 아닌 memset함수를 사용해야 하는 이유가 궁금합니다. fill함수를 쓰면 출력 결과가 안 나오는데 어떤 문제 때문에 그런건지 궁금합니다. 코드에 문제가 있는 건가요? -> fill(&visited[0], &visited[0]+10001*10001, 0);

  • c++
  • 코딩-테스트
  • C++
  • 코테 준비 같이 해요!
워니 댓글 2 좋아요 0 조회수 415

2-R 문제 질문있습니다..

미해결

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

우선 제가 작성한 코드링크는 다음과 같습니다. (주석 포함) http://boj.kr/5cf259ef97444ada8ad4e9391096d3b9 0번 노드가 root 가 아닌경우 루트 노드가 삭제되는 경우 => result = 0 루트 노드가 단독으로 남는 경우 => result = 1 까지 고려해서 케이스 분류를 잘게 하여 작성을 했는데... 결과가 틀렸다고 나와서 어느 부분을 놓쳤는지 통 모르겠습니다 ㅠㅠ

  • c++
  • 코딩-테스트
  • C++
  • 코테 준비 같이 해요!
Kyoung Jun Kim 댓글 1 좋아요 0 조회수 357

2-H 코드 질문..!

미해결

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

안녕하세요 큰돌님 늘 강의에 신경써주셔서 감사합니다. 2-H, 2659번 비밀번호 발음하기, 코딩하다가 틀렸다고 나와서.. 질문드리려고 합니다. 문제에 대한 강의도 확인했구요. 로직도 이해한 상태입니다. 그런데 제 코드를 봤을 땐, 어디서 오류가 났는지.. 반례를 도저히 못 찾겠어서 글을 써 봅니다. 혹시 제 코드에서 로직 오류가 있는지 피드백 주실 수 있으실까요? 코드 길이나, 반례 등 어떠한 피드백 전부 환영입니다. 제 코드는 링크로 첨부하겠습니다. 감사합니다. http://boj.kr/b1f8019ccf3d4f03ac0de822cb532282

  • c++
  • 코딩-테스트
  • C++
  • 코테 준비 같이 해요!
개발자아닙니다 댓글 1 좋아요 0 조회수 277

10.6 컨테이너 클래스 숙제 피드백

미해결

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

안녕하세요 강의를 듣고있는 학생입니다. 10.6에서 컨테이너 클래스의 개념을 설명해주시고 IntArray를 직접 구현해보는 숙제를 내주셔서 직접 머리를 짜내서 코드를 구현해봤습니다. 이 글을 보신 숙련자 분들께 제가 구현한 intArray를 피드백 받고싶어서 글을 작성합니다. #include <iostream> #include <vector> using namespace std; class IntArray { private: int m_length = 0; int* m_data = nullptr; public: IntArray(const int length) :m_length(length) { m_data = new int[m_length]; } IntArray(const std::initializer_list<int>& list) :IntArray(list.size()) { int count = 0; for (auto& ele : list) { //cout << "list" << endl; m_data[count] = ele; count++; } } ~IntArray() { delete[] m_data; } void initialize(const std::initializer_list<int>& list) { delete[] m_data; m_length = list.size(); m_data = new int[m_length]; if (m_data != nullptr) { int count = 0; for (auto& ele : list) { m_data[count] = ele; count++; } } } void reset() { delete[] m_data; m_data = nullptr; } void resize(const int size) { m_length = size; } void insertBefore(const int & value, const int & ix) { m_length += 1; int *n_data = new int[m_length]; int i = ix; for (int n = 0; n < ix; n++) n_data[n] = m_data[n]; n_data[ix] = value; for (i; i < m_length; i++) { n_data[i + 1] = m_data[i]; } delete[] m_data; m_data = n_data; } void remove(const int& ix) { m_length -= 1; int* n_data = new int[m_length]; int count = ix; for (int i = 0; i < ix; i++) { n_data[i] = m_data[i]; } for (count; count < m_length; count ++) { n_data[count] = m_data[count+1]; } delete[] m_data; m_data = n_data; } void push_back(const int& value) { this->m_length += 1; int* n_data = new int[m_length]; for (int i = 0; i < m_length; i++) n_data[i] = m_data[i]; n_data[m_length-1] = value; delete[] m_data; m_data = n_data; } friend ostream& operator << (ostream& out, IntArray& ia) { for (int i = 0; i < ia.m_length; i++) out << ia.m_data[i] << " "; out << endl; return out; } }; int main() { IntArray my_arr{ 1, 3, 5, 7, 9 }; cout << my_arr << endl; my_arr.insertBefore(10, 1); cout << my_arr << endl; my_arr.remove(2); cout << my_arr << endl; my_arr.push_back(13); cout << my_arr << endl; my_arr.initialize({ 1, 2, 3 }); cout << my_arr << endl; return 0; } 피드백 받고싶은 이유는 함수를 구현할 때 Array에 int를 추가, 삭제, 수정을 할때 새로 동적할당을 받은 뒤에 그 공간에 기존 데이터를 복사해주며 추가,삭제,수정 해줄 부분을 해주고 기존 동적할당 공간은 지우고 기존 객체가 가르키는 포인터를 새로 할당한 공간으로 설정 해주었습니다. 선생님 께서 예시로 작성하는 코드 짜임새와 코드라인수에 비해 제 머리속에서 나온 그대로를 코드로 담은거라 너무 조잡 난해하다는 생각이 들었습니다. 그래서 코드를 더 간단하게 짜려면 이 내용을 어떤식으로 수정하면 좋을지 피드백 받고싶습니다. 혹은 코드에 아쉬운점들을 고수분들의 관점으로 보고 말씀해주시면 배워보고싶습니다 감사합니다.

  • c++
  • C++
송지웅 댓글 1 좋아요 0 조회수 254

2-E 1992: 쿼드 트리 문제에서 quard함수 탐색 범위 질문입니다.

미해결

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

http://boj.kr/3dd3ee851f2a4530928260c354dd2deb 우선, 소스 공유합니다. 강사님 께서는 quard함수의 탐색 범위를 for(int i = y; i < y+ size; i++){ for(int j = x; j < x + size; j++){ 이렇게 잡으셨고 저는 for(int i = 0; i < size; i++){ for(int j = 0; j < size; j++){ 이렇게 잡았는데요. 의미적으로 같지 않나 생각합니다. 답이 다른 걸로 보아 문제가 있기는 한거 같은데 뭐가 잘못 된지 모르겠습니다. 도와주세요.

  • c++
  • C++
  • 코딩-테스트
  • 코테 준비 같이 해요!
고리오영감 댓글 2 좋아요 0 조회수 625

15.4 std::move

미해결

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

#pragma once #include<iostream> template <class T> class AutoPtr { public: T *m_ptr = nullptr; AutoPtr(T *ptr = nullptr) : m_ptr(ptr) { std::cout << "auto default constructor" << std::endl; } ~AutoPtr() { std::cout << "autoptr destructor" << std::endl; if ( m_ptr != nullptr )delete m_ptr; } Autoptr(const AutoPtr &a) { std::cout << "autoptr copy constructor" << std::endl; //deep copy m_ptr = new T; m_ptr = a.m_ptr; } AutoPtr &operator = (const AutoPtr &a) { std::cout << "autoptr copy assignment" << std::endl; if ( &a == this ) return *this; if ( m_ptr != nullptr ) delete m_ptr; m_ptr = new T; m_ptr = a.m_ptr; return*this; } //AutoPtr(const AutoPtr &a) = delete; //AutoPtr &operator=(const AutoPtr &a) = delete; AutoPtr(AutoPtr &&a):m_ptr(a.m_ptr) { a.m_ptr = nullptr; std::cout << "AutoPtr move constructor" << std::endl; } AutoPtr &operator=(AutoPtr &&a) { std::cout << "autoptr move assignment" << std::endl; if ( &a == this )return*this; if ( !m_ptr )delete m_ptr; m_ptr = a.m_ptr; a.m_ptr = nullptr; return*this; } T &operator*()const { return *m_ptr; } T &operator->()const { return m_ptr; } bool isNull()const { return m_ptr == nullptr; } }; #pragma once #include<iostream> class Resource { public: int *mData = nullptr; unsigned mLength=0; Resource() { std::cout << "default constructed" << std::endl; } Resource(unsigned length) { std::cout << "resource length constructed" << std::endl; this->mData = new int[length]; this->mLength = length; } Resource(const Resource &res) { std::cout << "copy constructed" << std::endl; Resource(res.mLength); for ( unsigned i = 0; i < mLength; i++ ) { mData[i] = res.mData[i]; //deep copy } } Resource &operator=(Resource &res) { std::cout << "copy assignment" << std::endl; if ( &res == this )return *this; if ( this->mData != nullptr )delete[]mData; mLength = res.mLength; mData = new int[mLength]; for ( unsigned i = 0; i < mLength; i++ ) { mData[i] = res.mData[i]; } return *this; } ~Resource() { std::cout << "resource destroyed" << std::endl; if ( mData!=nullptr ) { delete[]mData; } } void Print() { for ( unsigned i = 0; i < mLength; i++ ) { std::cout << mData[i] << " "; } std::cout << std::endl; } }; #include"autoPtr.h" #include"resource.h" int main() { using namespace std; AutoPtr<Resource> res1(new Resource(10000000)); cout << res1.m_ptr << endl; AutoPtr<Resource> res2 = res1; cout << res1.m_ptr << endl; cout << res2.m_ptr << endl; } 코드를 따라친거 같은데 AutoPtr<Resource> res2 = res1; 이부분에서 컴파일에러가 납니다 강의에서 코드를 빨리 넘겨서 잘 안보여서 어떤게 에러인지 모르겠습니다

  • c++
  • C++
댓글 1 좋아요 -1 조회수 345

3-D 어느 부분이 틀렸는지 감이 안잡힙니다..

미해결

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

우선 저는 Java를 이용해서 해당 문제를 풀었습니다. 그리고 선생님의 풀이 방식과는 다르게 저는 매 시간마다 먼저 불을 갱신하고 지훈이가 맵을 이동할 수 있는지를 판단하며 가장자리까지 도달하도록 로직을 작성했습니다. 만약, 가장자리에 도달 못할 경우 impossible을 출력하도록 로직을 작성했습니다. 어느 부분이 논리적으로 틀린것인지 아니면 구현을 잘못한건지 궁금합니다... 아래는 제 코드입니다. http://boj.kr/1dc68399559846a998ee7c467a046218

  • c++
  • 코딩-테스트
  • C++
  • 코테 준비 같이 해요!
mission0705 댓글 1 좋아요 0 조회수 328

크기가 정해지지 않은 자료 입력받기

미해결

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

안녕하세요, 항상 양질의 강의 잘 듣고 있습니다! 어디에 질문해야할지 모르겠어서 부득이하게 여기 올립니다. 다들 잘 하시는데 저 혼자 너무 초보자같은 질문이라 조금 부끄럽네요.. 문제를 풀 때, 크기가 정해지지 않은 전제조건을 해결하는게 너무 어렵습니다ㅠㅠ 예를 들면 아래와 같은 의문이 듭니다.. 크기가 주어지지 않은 2중 배열(N*N) 입력받아서 복제하기 - 크기도 끝도 모르고 N*N 조건만 있으면 문자열로 입력받아서 atoi 해서 잘라서 넣어야하나? 3의 배수의 크기로 입력받기, 자료값은 1또는 2또는 3만 받을 수 있다 - 입력받은 사이즈가 3의 배수가 아니거나 1,2,3 외의 숫자가 들어오면 어떻게 처리하지..? 프로그램을 멈추거나 조건에 맞게 들어올때까지 pop, push 해야하나..? 제가 보기에도 너무 베이스가 없는 질문같지만 혼자 해결하기 어려워서 질문 드립니다..!

  • c++
  • 코딩-테스트
  • C++
  • 코테 준비 같이 해요!
ahrngs 댓글 1 좋아요 0 조회수 568

가끔 코드에서 숫자+'0' ???

해결됨

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

가끔 코드에서 string변환시 숫자+'0' 이건 왜있는건가요??? 큰돌님이 자바스크립트 장인이라서 저런식으로 변환하는거라고 생각하면되겠죠?

  • c++
  • 코딩-테스트
  • C++
  • 코테 준비 같이 해요!
BH J 댓글 1 좋아요 0 조회수 321

1-H 문제 질문

미해결

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

강사님 안녕하세요. 강사님 문제 풀이를 보고 두 가지 질문이 있습니다. 1-H 문제의 아래 코드에서요, ret = max(ret, psum[i] - psum[i - k]); ret 에 최소값을 할당하는건 이해가되는데, 결국 문제는 최대값을 구하는건데 왜 프썸의 합 이 아닌 차 를 구해서 ret 과 비교하는지 잘 이해가 가지 않습니다. 변수에 최소 or 최대 값을 선언할 때, INT_MIN 이나 INT_MAX 를 할당하면 문제가 될까요? 일단 해당 문제에 적용 해봤을 떄는 딱히 문제는 없었습니다.

  • c++
  • 코테 준비 같이 해요!
  • 코딩-테스트
  • C++
알타리 댓글 1 좋아요 0 조회수 445

15:00 부근 질문 있습니다.

미해결

홍정모의 게임 만들기 연습 문제 패키지

#pragma once #include "Game2D.h" namespace jm { class MyTank { public: vec2 center = vec2(0.0f, 0.0f); //vec2 direction = vec2(1.0f, 0.0f, 0.0f); void draw() { beginTransformation(); { translate(center); drawFilledBox(Colors::green, 0.25f, 0.1f); // body translate(-0.02f, 0.1f); drawFilledBox(Colors::blue, 0.15f, 0.09f); // turret translate(0.15f, 0.0f); drawFilledBox(Colors::red, 0.15f, 0.03f); // barrel } endTransformation(); } }; class MyBullet { public: vec2 center = vec2(0.0f, 0.0f); vec2 velocity = vec2(0.0f, 0.0f); void draw() { beginTransformation(); translate(center); drawFilledRegularConvexPolygon(Colors::yellow, 0.02f, 8); drawWiredRegularConvexPolygon(Colors::gray, 0.02f, 8); endTransformation(); } void update(const float& dt) { center += velocity * dt; } }; class TankExample : public Game2D { public: MyTank tank; //MyBullet* bullet = nullptr; //MyBullet* bullet2 = nullptr; // bullet은 총알이 발사됐을 때만 존재하기 때문에 포인터로 되어있고 nullptr로 초기화가 되어있다. //TODO: allow multiple bullets int index = 0; std::vector<MyBullet*> ptr_bullet_array = { nullptr }; //TODO: delete bullets when they go out of the screen public: TankExample() : Game2D("This is my digital canvas!", 1024, 768, false, 2) {} ~TankExample() { //if (bullet != nullptr) delete bullet; //if (bullet2 != nullptr) delete bullet2; for (int i = 0; i <= index; ++i) { if (ptr_bullet_array[i] != nullptr) delete ptr_bullet_array[i]; } } void update() override { // move tank if (isKeyPressed(GLFW_KEY_LEFT)) tank.center.x -= 0.5f * getTimeStep(); if (isKeyPressed(GLFW_KEY_RIGHT)) tank.center.x += 0.5f * getTimeStep(); if (isKeyPressed(GLFW_KEY_UP)) tank.center.y += 0.5f * getTimeStep(); if (isKeyPressed(GLFW_KEY_DOWN)) tank.center.y -= 0.5f * getTimeStep(); // shoot a cannon ball if (isKeyPressedAndReleased(GLFW_KEY_SPACE)) { //if (bullet == nullptr) //{ // bullet = new MyBullet; // bullet->center = tank.center; // bullet->center.x += 0.2f; // bullet->center.y += 0.1f; // bullet->velocity = vec2(2.0f, 0.0f); //} //else if (bullet2 == nullptr) //{ // bullet2 = new MyBullet; // bullet2->center = tank.center; // bullet2->center.x += 0.2f; // bullet2->center.y += 0.1f; // bullet2->velocity = vec2(2.0f, 0.0f); //} ptr_bullet_array.push_back(nullptr); ptr_bullet_array[index] = new MyBullet; ptr_bullet_array[index]->center = tank.center; ptr_bullet_array[index]->center.x += 0.2f; ptr_bullet_array[index]->center.y += 0.1f; ptr_bullet_array[index]->velocity = vec2(2.0f, 0.0f); index++; } //if (bullet != nullptr) bullet->update(getTimeStep()); //if (bullet2 != nullptr) bullet2->update(getTimeStep()); // rendering tank.draw(); //if (bullet != nullptr) //{ // bullet->draw(); //} //if (bullet2 != nullptr) //{ // bullet2->draw(); //} //if (bullet != nullptr && bullet->center.x > 1.2f) //{ // delete bullet; // bullet = nullptr; //} //if (bullet2 != nullptr && bullet2->center.x > 1.2f) //{ // delete bullet2; // bullet2 = nullptr; //} //for (int i = 0; i <= index; ++i) //{ // if (ptr_bullet_array[i] != nullptr && ptr_bullet_array[i]->center.x > 1.2f) // { // delete ptr_bullet_array[i]; // ptr_bullet_array[i] = nullptr; // } //} for (int i = 0; i <= index; ++i) { if (ptr_bullet_array[i] != nullptr) { ptr_bullet_array[i]->update(getTimeStep()); ptr_bullet_array[i]->draw(); if (ptr_bullet_array[i]->center.x > 1.2f) { delete ptr_bullet_array[i]; ptr_bullet_array[i] = nullptr; } } } } }; } 교수님께서 설명하신 대로 연습문제를 풀어봤고 문제없이 잘 실행되는 거 같긴 한데 메모리 누수가 해결됐는지 잘 모르겠습니다. 연습문제를 풀기 전에 디버깅 모드로 봐도 CPU 사용량이 그대로인데 어디서 어떻게 확인할 수 있을까요?

  • c++
  • 객체지향
  • oop
  • C++
  • OpenGL
thd2tn 댓글 1 좋아요 0 조회수 448

2-O 4949번 - 균형잡힌 세상

해결됨

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

http://boj.kr/6436d8d2bb3c44d3b8568985b5d28abf 런타임 에러라고 뜨는데 어떻게 고쳐야 할지 전혀 모르겠습니다. 코드는 링크 첨부하였습니다.

  • c++
  • 코딩-테스트
  • C++
  • 코테 준비 같이 해요!
워니 댓글 1 좋아요 0 조회수 738

질문!

해결됨

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/4dc02e7565254fc7bfd44cd6a8609f94 작성하고, 강사님이랑 코드를 비교하는데, 어느 부분이 오류가 발생한 것인지 모르겠습니다..

  • c++
  • 코테 준비 같이 해요!
  • 코딩-테스트
  • C++
kimseunghwan7777 댓글 1 좋아요 0 조회수 402

혹시 prev 배열 연쇄 for문 python에는 그런 문법 없나요?

미해결

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

ret = bfs() v = [] v.append(K) while K != N: K = prev[K] v.append(K) print(ret - 1) print(*v[::-1]) prev for문코드 같은 문법 파이썬에는 없나요??? while문으로 만들긴했지만요

  • c++
  • 코딩-테스트
  • 코테 준비 같이 해요!
  • C++
BH J 댓글 1 좋아요 0 조회수 353

인기 태그

인프런 TOP Writers

주간 인기글