이야기를 나눠요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
자바 코딩테스트 - it 대기업 유제
전혀 생각해내지 못한 문제풀이에 대해서..
안녕하세요! 강사님!알고리즘을 계속 연습하는 학생입니다. 질문에 앞서 간단히 공부과정을 말씀드리면 작년 12월 쯤 부터 해서 현재까지 꾸준히 알고리즘 문제를 풀어보면서 공부하고 있습니다.지금까지는 절대적인 알고리즘 문제 경험이 적어서, 절대적인 시간 투자와 많은 문제에 도전하는 방식으로 공부했고, 정말 아예 이해가 안가거나 특정 알고리즘 대회 혹은 코테 문제들은 직접 참여해서 개인적으로 정리해서 기록해놓고, 다시 복기해보는 과정을 하고 있습니다.(그럼에도 다시 풀면 여전히 못풀긴 하더라구요..) 간혹, 알고리즘 문제를 풀어낼 때 제가 전혀 생각하지 못한 방법으로 풀이가 되는 문제들이 있는데(ex, 시뮬레이션-비밀번호), 저는 도저히 그 풀이에 대한 접근이나 생각까지는 도달하지 못하는 것 같습니다. (저는 20만번 * 8번 방향 탐색으로 풀었습니다.) 어떻게하면 그런 풀이나 접근을 생각해 낼 수 있는지... 그 사고과정을 연습하는 방법이 따로 존재하는 것인지 궁금해서 글 남겨봅니다.질문을 요약하면 다음과 같습니다.생각지 못한 풀이과정을 도출할 수 있는 사고연습(생각하는 연습)이나 방법이 존재하는것인지? 1-1. 있다면 댓글을 통해 알려주실 수 있는지?해당 알고리즘 강의를 저같은 사람이 어떻게 활용해 보는것이 좋을지? 긴 글 읽어주셔서 감사합니다.
-
스프링 프레임워크는 내 손에 [스프1탄]
mysql 5.7.32 자동 셧다운
안녕하세요 선생님~현재 맥북을 부트캠프를 이용해서 윈도우 운영체제를 사용하고 있습니다.헌데 mysql startup을 실행하면 혼자서 셧다운을 해버립니다 ㅠㅠ 혹시 해결방법이 있을까요??
-
스프링 시큐리티
안녕하세요. 급하게 문의를 드리고 싶은데요.
안녕하세요. 급하게 문의를 드리고 싶은데요.해당 강의를 보고 시큐리티로 사용자, 어드민을 개발했습니다. 그런데 고객사에서 서버 1대에서 2대로 운영하고 싶다고 갑자기 요청이 왔는데...제가 알기로든 시큐리티는 세션으로 관리되기 때문에서 서버 2대에서는 세션관리가 어려운 것으로 알고 있습니다.그래서 강사님께 문의를 드려보고 싶은데요..혹시 시큐리티로 서버 2대에서 운영되게 할 수 있는 방법이 있을까요?답변 주시면 감사하겠습니다.
-
[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
문제 풀이
삭제된 글입니다
-
스프링 핵심 원리 - 기본편
스프링 공부에 대해서
안녕하세요무료 강의 듣고 차례대로 하나씩 들으려고 계획을 세우고 있습니다.2달 뒤에 스프링부트를 사용하는 안건에 투입예정이라 빠르게 공부를 하려고 하는데 스프링로드맵, 스프링부트 로드맵 총 2가지가 있어서 문의를 드립니다.해당 스프링로드맵부터 차근차근 들어도 현업에 들어가는데 문제가 없을까요?? 스프링 개념없이 스프링부트부터 들어도 되는지 걱정이라 글 작성해봅니다.
-
[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
앱 개발하는데 노트북 성능 문제가 있는걸까요...?
안드로이드 스튜디오로 개발하는데 노트북 RAM성능만 24이상이면 큰 문제 없다는 글 보고 갤럭시 북 프로3 램32로 수업 진행중인데,,, 앱 다시 시작하거나 하면 계속 꺼지는 일이 자주 발생합니다... 노트북 문제가 있는 걸까요,,,
-
하루만에 배우는 express with AWS
[강의 추가] 건의
삭제된 글입니다
-
다양한 사례로 익히는 SQL 데이터 분석
나래비는 일본어 입니다..
선생님.. 나래비는 일본어 입니다. 어감이 예뻐서 옛 우리말인줄 알고 찾아봤는데 '줄을 세우다'라는 일본어 '나라비'가 어원이라고 하네요
-
워드프레스 쇼핑몰(우커머스) 제작 따라하기
역직구 쇼핑몰 중국 결제 알려주세요
Pg사 연동은 어떻게하나요??
-
파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
Azure app service의 웹소켓 지원에 대해서 질문
안녕하세요 강사님.<파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트> 강의를 통해서 장고에 처음 입문하고 개인 프로젝트도 5개정도 진행하고 배포까지 해보았습니다.<ChatGPT 영어 상황극 채팅 서비스 만들기 (Feat. 파이썬/장고채널스)> 강의가 새롭게 올라와서 체널스 학습을 위해 강의를 구매하고 싶은데 , 강의를 듣기전 궁금한 점이 있습니다. 1. 체널스를 통한 소켓통신을 하면 Gunicorn이 아닌 Daphne을 사용하는데 도커 파일을 만들때 daphne를 사용하면 Azure app service를 통해 배포할 수 있나요?2. 프로덕션 레벨에서 괜찮은 성능이 나올까요?
-
실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
Terrafrom을 이용한 AWS이용시 과금
안녕하세요 혹시 실습을 끝까지 따라하고 프로젝트를 진행하게 되면 과금이 어느정도 진행될까요? Free tier내에서 모두 해결가능한가요?
-
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
소리가 작습니다
스피커를 최대로 켜도 소리가 너무 작아요 ㅜㅜ소리는 조절가능하니 고급을 위한 영상찍을때는 소리좀 크게해서 찍어주세요 초급은 소리 커서 80퍼로 조절하며 들었어요 중급은 너무 작아요 한밤에 음량 100으로 해도 선풍기 소리때문에 선풍기를 꺼야해요 그리고 번외로 플러터랑 파이어베이스 연동해서 만드는걸 배우고 싶은데 개인적으로 아는 컨텐츠 있으심 알려주세요 감사합니다
-
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ReSharper C++를 사용해도 될까요?
intellij를 쓰다가 넘어와서 jetBrain회사의 키맵과 기능에 익숙해져있는데요.ReSharper C++라는 Visual Assist와 유사한 기능을 하는 앱이 있어 설치하고, 기존 vs키맵에 다 덮어씌우기 하고 사용하려는데요.나중에 문제될일이 있을까요? 취직후 실제 직장에선 사용못한다거나, vs기본 단축키를 안쓰고 intellij 단축키를 써서 의사소통에 문제가 생긴다거나..
-
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
구조를 이렇게 짜려면 어떤 것을 중점으로 연습해야 할까요?
서버에 대한 개념이 머리에 잡히는 중이라 모든 것이 새롭게 느껴지는 중입니다. 저는 이전에 dx12 강의를 보고 이어서 시청하는거라 그 때도 그랬지만 코드의 뼈대가 되는 구조적인 부분에 대해서 좀 영감을 얻을 수 있을거라고 기대하고 이번 강의를 수강하게 되었습니다. 아니나다를까 이번 강의에서 보여주신 IocpCore 구조를 열심히 분석하니까 저 나름대로 가닥이 잡히는 느낌이 들었는데 한편으로는 그전에 배운 내용을 바탕으로 내가 이렇게 구조를 짤 수 있을까? 하는 생각이 들었습니다. 이런 구조적인 부분은 나중에 현업을 가서 업무를 하더라도 마냥 시간이 해결해줄 것이라고 생각하지 않는데 따로 연습을 하시거나 구조를 짜기 위한 시간투자를 하시는 건지 궁금합니다. 그리고 연습을 하신다면 어떻게 연습해야 할지 여쭙고 싶습니다.
-
모든 개발자를 위한 HTTP 웹 기본 지식
커리를 따라가다가 고민이 생겨 게시글 남깁니다.
영한님 스프링 커리를 따라가고 있는 비전공자 취준생입니다. 강의를 듣다가 질문을 가끔 남기곤 했는데, 이 질문에 대한 답변들에 대한 개념을 뒤에서 영한님이 설명해 주실 때가 있더라구요. 그래서 문득 이런 생각이 들었습니다. 당장 모르겠거나 이런 고민들을 질문을 남기거나 구글링을 해서 의문을 해결하고 넘겨야하는 건지 아니면 그냥 커리를 따라가다가 보면 나오니까 넘기고 강의를 쭉 듣는게 좋은건지..전자는 생각보다 시간을 너무 잡아먹고 후자를 택하기엔 혹시 안나오면 어쩌지? 내가 못따라가면 어쩌지? 이런 불안감이 있습니다. 어떻게 하는게 좋을까요?
-
퍼블리셔 취업 진짜 실전 가이드(PDF)
질문 드립니다.
안녕하세요 저는 현재 웹퍼블리셔로 이직을 준비하고 있습니다.우연히 강의를 알게 되어 기초부터 수강 예정입니다.혹시 현재 오프라인에서 선생님 강의를 들을 수 있는방법이 있는지 질문 드립니다. 좋은 강의 만들어주셔서 정말 감사드립니다!
-
등산코스 추천 서비스 MVP에 소중한 의견 부탁드리겠습니다!
안녕하세요. 등산코스 추천 서비스 여기있산 팀입니다.몇 주 동안 사이드 프로젝트로 등산코스 추천 서비스를 만들었습니다.MVP 단계라 많이 부족하지만 테스트 해보시고 소중한 의견 주시면 감사하겠습니다!등산 정보 찾으러 다니다 지쳐버린 😩 등산러 여러분여러분의 피로를 날려드리기 위해 '여기있산' ⛰️이 왔습니다~!맞춤형 등산 코스 추천 서비스인 '여기있산'⛰️ 을 이용해보시고 설문조사에 참여해주세요!추첨을 통해 응답해주신 10분께 "시원한 음료쿠폰 🍹"을 전달 드립니다! :) 등산 코스 추천 받고 서비스 ⛰️ 이용하기 👇👇👇https://bit.ly/mountainhere_inflearn5분 투자해서 등산 후 마실 "시원한 음료쿠폰 🍹" 받으러가기 👇👇👇https://forms.gle/21FhfZYspDkmYMoy8
-
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
프로토콜 버퍼 자동 변환기 툴 배포합니다!
수업시간에 구글 프로토콜 버퍼를 이용하여 프로토콜 패킷을 생성하는데, 클라이언트와 서버단에서 PacketHandler에는 함수를 직접 정의해서 생성해야합니다. 이 과정이 꽤 번거롭고 이름도 정확하게 맞춰야합니다. 그래서 자동 툴을 이용하여 작성해야 할 코드를 자동으로 정확하게 생성해주는 툴을 제작하여 배포합니다. 이 기능의 배포는 여기에서만 합니다. 이 기능은 UnityEditor Tools를 구현하여 이용하는 방식입니다. [여기를 클릭하여 다운로드] 스크립트를 다운로드합니다. (또는 아래 스크립트를 복사하여 작성) 유니티 에디터 Assets 폴더 안에 넣습니다. 위치는 상관 없습니다.유니티 에디터 상단 바에서 Tools/Bonnate/Socket/Generate Protocol Code From Enum을 선택합니다. 프로토콜 버퍼 에디터에서 MsgId에 프로토콜 이름을 복사합니다.주석을 지원합니다./* 주석은 구분 없이 모든곳에 동일하게 생성됩니다.// 주석은 프로토콜의 주석으로 생성됩니다.본 글에서는 아래 이미지와 같이 복사하였습니다. 복사한 값 Enum 스니펫을 Tools 윈도우 창에 붙여넣기합니다.우측의 변환 버튼을 클릭합니다.생성된 값을 각 스크립트에 붙여넣기합니다.변환된 프로토콜 코드는 프로토콜버퍼 에디터 구현부에 붙여넣으세요.서버가 보내는 프로토콜은 클라이언트단(유니티)에서 사용합니다.클라이언트에서 보내는 프로토콜은 서버단에서 사용합니다. 전체 코드입니다. 위에서 다운로드 받은 파일과 동일합니다./* * GenerateProtocolCodeFromEnum - Enum을 이용한 프로토콜 코드 생성을 위한 유니티 에디터 창 * 작성자: [Bonnate] https://bonnate.tistory.com/ * 라이선스: 없음 (명시적인 라이선스 없이 제공됨) * * 설명: * 이 스크립트는 Enum 스니펫에서 프로토콜 코드, 클라이언트 핸들러 코드, 서버 핸들러 코드를 생성하기 위한 유니티 에디터 창을 정의합니다. * 입력한 Enum 스니펫을 자동으로 프로토콜 코드로 변환하고, 해당하는 클라이언트와 서버 핸들러 함수를 생성합니다. * 생성된 코드는 클립보드에 복사하여 추가적인 사용이 가능합니다. * * 주의 사항: * 이 스크립트는 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] https://www.inflearn.com/roadmaps/355 * 의 기능을 이용하기 위해 작성된 스크립트입니다. * * 사용 방법: * 1. 이 스크립트를 유니티 프로젝트의 Editor 폴더에 첨부합니다. * 2. GenerateProtocolCodeFromEnum 창을 열기 위해 Tools -> Bonnate -> Socket -> Generate Protocol Code From Enum을 선택합니다. * 3. 입력 텍스트 영역에 Enum 코드 스니펫을 입력합니다. * 4. "변환" 버튼을 클릭하여 프로토콜 코드, 클라이언트 핸들러 코드, 서버 핸들러 코드를 생성합니다. * 5. 생성된 코드는 각각의 텍스트 영역에 표시됩니다. * 6. 해당 영역의 텍스트를 클립보드에 복사하려면 옆에 있는 버튼을 클릭합니다. * 7. 생성된 코드를 복사하여 각 코드에 붙여넣기하여 편리하게 프로토콜을 디자인합니다. * * 참고: 이 스크립트는 현재 상태로 제공되며 일부 제한 사항과 문제가 있을 수 있습니다. * 개인적으로 업데이트 되나, 온라인(깃허브 리포지트리 등)에 배포하지는 않을 예정입니다. */ #if UNITY_EDITOR using UnityEngine; using UnityEditor; using System.Text; using System.Text.RegularExpressions; public class GenerateProtocolCodeFromEnum : EditorWindow { private string mInputText = ""; private string mProtocolText = ""; private string mClientHandlerText = ""; private string mServerHandlerText = ""; private Vector2 mScrollPosition; [MenuItem("Tools/Bonnate/Socket/Generate Protocol Code From Enum")] public static void ShowWindow() { GetWindow<GenerateProtocolCodeFromEnum>("Generate Protocol Code From Enum"); } private void OnGUI() { mScrollPosition = EditorGUILayout.BeginScrollView(mScrollPosition, GUILayout.ExpandHeight(true)); // 입력 텍스트 영역 EditorGUILayout.BeginHorizontal(); GUILayout.Label("Enum 코드 스니펫 입력"); // 변환 버튼 if (GUILayout.Button("변환", GUILayout.Width(80))) { mInputText = RemoveCommonIndentation(mInputText); GenerateProtocol(); EditorGUIUtility.systemCopyBuffer = mProtocolText; // 변환된 텍스트를 클립보드에 복사 } EditorGUILayout.EndHorizontal(); mInputText = EditorGUILayout.TextArea(mInputText, GUILayout.ExpandHeight(true)); GUILayout.Space(30); // 프로토콜 코드 영역 EditorGUILayout.BeginHorizontal(); GUILayout.Label("변환된 프로토콜 코드"); // 복사 버튼 if (GUILayout.Button("복사", GUILayout.Width(80))) { EditorGUIUtility.systemCopyBuffer = mProtocolText; // 프로토콜 코드를 클립보드에 복사 } EditorGUILayout.EndHorizontal(); mProtocolText = EditorGUILayout.TextArea(mProtocolText, GUILayout.ExpandHeight(true)); GUILayout.Space(10); // 서버 핸들러 영역 EditorGUILayout.BeginHorizontal(); GUILayout.Label("서버가 보내는 프로토콜 (클라이언트단에서 구현)"); // 버튼 if (GUILayout.Button("복사", GUILayout.Width(80))) { EditorGUIUtility.systemCopyBuffer = mServerHandlerText; // 서버 핸들러 코드를 클립보드에 복사 } EditorGUILayout.EndHorizontal(); mServerHandlerText = EditorGUILayout.TextArea(mServerHandlerText, GUILayout.ExpandHeight(true)); GUILayout.Space(10); // 클라이언트 핸들러 영역 EditorGUILayout.BeginHorizontal(); GUILayout.Label("클라이언트가 보내는 프로토콜 (서버단에서 구현)"); // 버튼 if (GUILayout.Button("복사", GUILayout.Width(80))) { EditorGUIUtility.systemCopyBuffer = mClientHandlerText; // 클라이언트 핸들러 코드를 클립보드에 복사 } EditorGUILayout.EndHorizontal(); mClientHandlerText = EditorGUILayout.TextArea(mClientHandlerText, GUILayout.ExpandHeight(true)); EditorGUILayout.EndScrollView(); GUILayout.Space(20); GUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Powered by: Bonnate"); if (GUILayout.Button("Github", GetHyperlinkLabelStyle())) { OpenURL("https://github.com/bonnate"); } if (GUILayout.Button("Blog", GetHyperlinkLabelStyle())) { OpenURL("https://bonnate.tistory.com/"); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); EditorGUILayout.LabelField("이 기능은 인프런 강의의 기능을 편리하게 사용하기 위해 구현되었습니다."); if (GUILayout.Button("[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈]", GetHyperlinkLabelStyle())) { OpenURL("https://www.inflearn.com/roadmaps/355"); } GUILayout.EndHorizontal(); } private GUIStyle GetHyperlinkLabelStyle() { GUIStyle style = new GUIStyle(GUI.skin.label); style.normal.textColor = new Color(0f, 0.5f, 1f); style.stretchWidth = false; style.wordWrap = false; return style; } private void OpenURL(string url) { EditorUtility.OpenWithDefaultApp(url); } private string RemoveCommonIndentation(string input) { string[] lines = input.Split('\n'); // 찾아낼 공백 패턴 Regex indentRegex = new Regex(@"^\s+"); // 최소 공통 공백 찾기 int maxIndentLength = 0; foreach (string line in lines) { if (!string.IsNullOrWhiteSpace(line)) { Match match = indentRegex.Match(line); if (match.Success) { int indentLength = match.Length; if (indentLength > maxIndentLength) maxIndentLength = indentLength; } } } // 최소 공통 공백 제거 string output = ""; foreach (string line in lines) { if (line.Trim() == "") continue; if (!string.IsNullOrWhiteSpace(line)) { string trimmedLine = line.Substring(maxIndentLength); output += trimmedLine + "\n"; } } return output; } private void GenerateProtocol() { // 입력 텍스트를 줄 단위로 분할 string[] lines = mInputText.Split('\n'); // 생성된 코드 문자열 초기화 string generatedProtocolCode = ""; string generatedClientHandlerCode = ""; string generatedServerHandlerCode = ""; bool isMultiLineComment = false; bool isClientHandlerComment = false; bool isServerHandlerComment = false; for (int i = 0; i < lines.Length; ++i) { string line = lines[i]; // 다중 줄 주석 처리 if (line.Trim().StartsWith("/*")) { isMultiLineComment = true; } if (isMultiLineComment) { generatedProtocolCode += line + "\n"; generatedClientHandlerCode += line + "\n"; generatedServerHandlerCode += line + "\n"; // 다중 줄 주석 종료 if (line.Trim().EndsWith("*/")) { isMultiLineComment = false; } continue; } if (line == "\n") { generatedProtocolCode += "\n"; generatedClientHandlerCode += "\n"; generatedServerHandlerCode += "\n"; continue; } // 주석인 경우 처리하여 유지 if (line.Trim().StartsWith("//")) { StringBuilder funcComment = new StringBuilder(); for (; i < lines.Length; ++i) { line = lines[i]; if (!line.Trim().StartsWith("//")) { funcComment.Remove(funcComment.Length - 2, 2); --i; break; } funcComment.Append($"{line}\n"); } // 클라이언트 핸들러 주석 확인 if (i + 1 < lines.Length && lines[i + 1].Trim().StartsWith("C_")) { isClientHandlerComment = true; isServerHandlerComment = false; } // 서버 핸들러 주석 확인 else if (i + 1 < lines.Length && lines[i + 1].Trim().StartsWith("S_")) { isClientHandlerComment = false; isServerHandlerComment = true; } if (isClientHandlerComment) { generatedClientHandlerCode += funcComment + "\n"; } if (isServerHandlerComment) { generatedServerHandlerCode += funcComment + "\n"; } generatedProtocolCode += funcComment + "\n"; continue; } // 빈 줄이거나 등호 (=)가 없는 줄은 건너뜀 if (string.IsNullOrEmpty(line) || !line.Contains("=")) continue; // 줄에서 변수 이름과 값 추출 string[] parts = line.Split('='); string variableName = parts[0].Trim(); string variableValue = parts[1].Trim(); // 접두사 추출 및 나머지 이름을 카멜 표기법으로 변환 string[] nameParts = variableName.Split('_'); string prefix = nameParts[0]; string camelCaseName = ""; for (int j = 1; j < nameParts.Length; ++j) { camelCaseName += char.ToUpper(nameParts[j][0]) + nameParts[j].Substring(1).ToLower(); } // 새 프로토콜 메시지 생성 string protocolMessage = $"message {prefix}_{camelCaseName} {{\n}}"; // 생성된 프로토콜 메시지를 코드에 추가 generatedProtocolCode += protocolMessage + "\n"; // 클라이언트 핸들러 코드 생성 if (prefix.StartsWith('C')) { string clientHandlerCode = $"public static void {prefix}_{camelCaseName}Handler(PacketSession session, IMessage packet)\n{{\n {prefix}_{camelCaseName} {prefix.ToLower()}_{camelCaseName.ToLower()} = packet as {prefix}_{camelCaseName};\n // TODO\n}}\n"; generatedClientHandlerCode += clientHandlerCode + "\n"; } // 서버 핸들러 코드 생성 if (prefix.StartsWith('S')) { string serverHandlerCode = $"public static void {prefix}_{camelCaseName}Handler(PacketSession session, IMessage packet)\n{{\n {prefix}_{camelCaseName} {prefix.ToLower()}_{camelCaseName.ToLower()} = packet as {prefix}_{camelCaseName};\n // TODO\n}}\n"; generatedServerHandlerCode += serverHandlerCode + "\n"; } } // 생성된 코드를 입력 필드에 할당 mProtocolText = generatedProtocolCode; mClientHandlerText = generatedClientHandlerCode; mServerHandlerText = generatedServerHandlerCode; } } #endif
-
코딩테스트 [ ALL IN ONE ]
사용하시는 에디터?
사용하고 계시는 에디터가 뭘까요?
-
[사이드프로젝트] 운동 레슨 매칭 서비스 MVP 유저테스트 한번 부탁드리겠습니다!!!
안녕하세요 IT분야에서 PM직무를 공부하고 있는 취준생입니다.현재 팀으로 학습을 하면서 MVP로 소규모 레슨 메이트 매칭 서비스를 만들어봤습니다.한번 사용해보시고 유저테스트 한번 부탁드리겠습니다!! 🧘🏻♀️개인레슨은 너무 비싸서 소규모레슨 듣고싶은데 💸👭PT, 필라테스, 요가, 테니스 레슨 같이 들을 사람은 어디서 찾지?🔍"개인레슨은 비용이 부담되어서 1:2 혹은 1:3 등 소규모 레슨을 듣고는 싶은데, 같이 들을 사람이 없어요""센터에서 소규모 레슨을 함께 들을 사람을 직접 구해오라고 해요" 이런 문제로 듣고 싶은 레슨을 듣지 못한 경험은 없나요? 저희 레슨메이트는 소규모 레슨 메이트를 구하는 어려움을 해결하고자 합니다.레슨메이트에서 메이트를 만나 원하는 레슨을 합리적인 가격으로 받아 보세요! ✔주요 기능- '모집공고 작성’ 또는 ‘참여하기’를 통한 레슨메이트 매칭- 성별, 운동경력, 운동성향을 고려한 매칭 ✔서비스 소개 및 매칭 방법- ‘모집공고 작성’ 또는 ‘참여하기’를 통해 레슨메이트 매칭서비스를 이용할 수 있어요.- 매칭이 완료되면 레슨메이트들을 카카오톡 오픈채팅방으로 초대해드릴거에요. 🎁 런칭기념 이벤트 🎁레슨메이트 유저 테스트 참여하고 커피+디저트 기프티콘 받아가세요💌🔗레슨메이트 웹:https://lessonmate.webflow.io/?utm_source=community&utm_medium=viral&utm_campaign=community_viral🖥️ 유저 테스트:https://walla.my/lessonmate