묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-R 질문있습니다 :)
안녕하세요 선생님 🙂너무 좋은 아이디어 제공해주셔서 감사합니다 ^^ 선생님 강의를 보기 전에 먼저 풀어봤는데요, DP방식이 아닌 1차원 배열로 설계했습니다. S = E일 경우에는 숫자가 1개밖에 되지 않기 때문에 팰린드롬Oarr[S]과 arr[E]가 같지 않을 경우에는 팰린드롬X그 외의 경우는 함수처리위와 같이 설계를 하였고, 테스트케이스는 올바르게 출력이 되었습니다. 하지만 틀렸다고 하더라구요 ㅠㅠ 제 아이디어의 어디가 잘못되었는지 알려주시면 정말 감사하겠습니다 ㅎㅎ http://boj.kr/ddee46587ca14173a4cd344a40b25894
-
해결됨2시간으로 끝내는 코루틴
CoroutineScope & Dispatcher 질문
안녕하세요.제가 복습을 하다가 궁금한 부분이 생겨 질문드립니다. section1 아래 코드를 다시 보니까 조금 혼란이 옵니다. fun main(): Unit = runBlocking { val job1 = CoroutineScope(Dispatchers.Default).launch() { ... } val job2 = CoroutineScope(Dispatchers.Default).launch() { ... } } 위 코드는 같은 Dispatchers.Default를 사용하는 것으로 보이는데, 질문.두 CoroutineScope가 공통된 Dispatchers.Default를 공유하니까 한 코루틴에서 예외가 발생하면 다른 코루틴에서 예외가 발생할 것 같은데, 따로 처리되는 이유가 무엇인지 궁금합니다.예를 들어, job1에 대한 CoroutineScope에서 예외가 발생하면 Dispatchers.Default에 job1에 대한 id를 주고, 해당 코루틴(ex. job1 내부 delay 상태로 된 내부 코루틴)에 대한 코루틴을 전부 지워라이런 식으로 작동해서 독립적으로 실행되는건가요? 코루틴을 스레드에 배정하는 역할이 Dispatchers.Default, IO, Main 등이 있는데, 이름이 같은데 따로 예외처리되고 하니까 헷갈려서 질문드립니다. 제가 Dispatchers와 CoroutineScope 관계에 대해서 잘 이해를 못해서 또 이렇게 질문 올립니다.. 감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
함수 포인터 질문
안녕하세요. 함수 포인터를 사용할 때와 사용하지 않을 때 기능적인 차이점은 알겠지만, 함수 포인터를 사용했을 때의 이점과 왜 사용하는지 알 수 있을까요? 그냥 메인함수에서 함수 포인터를 사용하지 않고 일반 함수를 호출 할 때와 코드 길이는 비슷한 것 같은데 어떤 이점이 있는지 언제 쓰면 좋은지 쉽게 설명해주시면 감사드리겠습니다.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
11장 팔로잉 기능 구현 관련
11장 팔로잉 기능 구현에서는팔로잉 하는 목록 페이지팔로우 하고 있지 않는 목록 페이지두 가지를 구현하였습니다.이를 기반으로 인스타그램처럼 프로필을 카드기반으로 꾸미고 10-12 에서 구현한 무한 스크롤을 적용하였습니다. 프로필 페이지에서 구현한 프로필 카드를 목록에서 재활용하여 반복을 줄이고자 했습니다.대부분의 기능은 구현하였습니다만, 강의의 내용만으로는 스스로 해결하기 힘든 점들이 있어 질문글을 파란색으로 남깁니다. 우선, 팔로잉 목록과 언팔로인 목록을 나눈 경우 언팔로잉 목록에서 내가 팔로잉 한지 모르고 검색한 경우 유저 목록이 검색되지 않는 불편함이 존재할 수 있습니다.물론 인스타 그램의 경우 강사님께서 구현한 것처럼 탭을 나누어서 구현하였으니 이는 문제가 아닐 수 있습니다.그러나 하기의 사진은 정확한 예시는 아닐 수 있으나 내 팔로워들 중 내 팔로잉 여부를 확인할 수 있는 페이지를 구현하고 싶습니다.인스타 팔로워 페이지인스타 팔로잉 페이지 따라서 팔로우하지 않는 목록 페이지를 유저 목록들이 모두 나열되면서 눈으로 팔로우 여부를 확인할 수 있는 페이지로 구현하고자 합니다. 하기는 현재 구현한 목록 페이지의 일부 입니다.개인 프로필 페이지에서는 팔로잉 버튼 대신 edit 버튼이 활성화 됩니다.해당 페이지를 구현하기 위해 11장에서 구현한 두 함수를 generic ListView를 상속받은 class 기반 뷰로 구현하였습니다.# views.py @method_decorator(login_required_hx, name="dispatch") class DiscoverListView(ListView): model = User paginate_by = 12 context_object_name="user_list" def get_queryset(self): qs = User.objects.all() user: User = self.request.user follow_relation = self.kwargs.get("follow_relation", False) # url로 부터 받는 인자 match follow_relation: case "following": qs = user.following_user_set.all() case "followed": qs = user.followed_user_set.all() # qs = User.objects.exclude(id__in=user.following_user_set.all()) qs = qs.exclude(id__in=[user.pk]).select_related("profile").prefetch_related("follower_user_set", "following_user_set") query = self.request.GET.get("query", "").strip() if query: qs = qs.filter( Q(username__icontains=query) | Q(full_name__icontains=query) | Q(email__icontains=query) ) return qs.order_by("username") def get_template_names(self) -> list[str]: # htmx로 요청이 들어오면 검색바 등 불필요한 위 아래 내용 제거 후 내용만 업데이트 if self.request.htmx: template_name = "accounts/_user_list.html" else: template_name = "accounts/user_list.html" return [template_name] def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # is_follwer 는 html에서 follow 버튼을 구분하기 위한 인자 # context['is_follower'] = True if self.kwargs.get("follow_relation", False)=="following" else False qs = self.get_queryset() follow_dict = { q.username:self.request.user.is_follower(q) for q in qs } context['follow_dict'] = follow_dict query = self.request.GET.get("query", "").strip() context['query']=query return context여기서 .prefetch_related("follower_user_set", "following_user_set") 을 통해 모델에서 구현한 팔로워와 팔로잉 유저 수를 불러오는 property를 templates에서 호출할 때 N+1 문제를 해결하고자 하였습니다.<!-- _user_profile_card.html --> {% load static %} <div class="card" style="border-radius: 15px;"> <div class="card-body p-4"> <div class="d-flex"> <div class="flex-shrink-0"> {% if user.profile.avatar %} <img src="{{user.profile.avatar.url}}" alt="{{user}}'s avatar" class="img-fluid" style="width: 180px; border-radius: 10px;"> {% else %} <img src="{% static 'images/profile-icon-design-free-vector.jpg' %}" alt="{{user}}'s avatar" class="img-fluid" style="width: 180px; border-radius: 10px;"> {% endif %} </div> <div class="flex-grow-1 ms-3"> <h5 class="mb-1" style="display:inline">{{ user.full_name }} </h5> {% if user.profile.team %} <h6 class="text-muted" style="display:inline">{{ user.profile.team }}</h6> {% endif %} <p class="mb-1 pb-1">{{ user.email }}</p> <div class="d-flex justify-content-start rounded-3 p-2 mb-2 bg-body-tertiary"> <div> <p class="small text-muted mb-1">Data</p> <p class="mb-0">TDA</p> </div> <div class="px-3"> <p class="small text-muted mb-1">Followers</p> <p class="mb-0">{{user.follower_count}}</p> </div> <div> <p class="small text-muted mb-1">Following</p> <p class="mb-0">{{user.following_count}}</p> </div> </div> <div class="d-flex pt-1"> {% if request.user == user %} <a href="{% url 'accounts:profile_edit' %}" class="btn btn-outline-primary btn-sm"> <i class="bi bi-pencil-square"></i> 프로필 수정 </a> {% else %} {% comment %} {% include "accounts/_user_follow.html" with username=user.username%} {% endcomment %} {% include "accounts/_user_follow.html" with is_follower=follow_dict.user.username username=user.username%} {% endif %} </div> </div> </div> </div> </div>프로필 카드 내에서 팔로워와 팔로잉 수를 보여주기 위해 접근한 제 방식이 맞는지가 궁금합니다. models.py에서 구현한 follower_count 또는 following_count를 template에서 호출하는 방식이 일반적인 접근 방식인가요?그 다음 제가 위에서 구현하고자 한 유저별 팔로우 여부를 get_context_data에서 follow_dict 라는 변수명으로 저장하여 하기와 같이 template에 넘겨주었습니다.<!--user_follow.html--> {% include "core/_messages_as_event.html" %} {% load keyvalue %} {% if follow_dict|keyvalue:username %} <a href="#" hx-post="{% url 'accounts:user_unfollow' username %}" hx-swap="outerHTML" class="btn btn-sm btn-primary"> <i class="bi bi-person-check-fill"></i> 팔로잉 중 </a> {% else %} <a href="#" hx-post="{% url 'accounts:user_follow' username %}" hx-swap="outerHTML" class="btn btn-sm btn-secondary"> <i class="bi bi-person-add"></i> 팔로잉 하기 </a> {% endif %}dictionary 키 값으로 변수를 입력하는 것이 django template에서 지원되지 않기 때문에 하기의 함수를 등록하여 활용하였습니다.register = template.Library() @register.filter def keyvalue(dict, key): return dict[key]결과물은 구현한 페이지처럼 잘 보여지지만, 두 가지 문제가 존재합니다.확실치 않지만 하기의 코드에서 N+1 오류가 발생하는 것으로 보입니다.follow_dict = { q.username:self.request.user.is_follower(q) for q in qs }팔로잉 혹은 언팔로잉 요청 시 500 서버 에러가 발생합니다. 아마도 follow_dict가 요청 시에 업데이트 되지 않아 발생하는 오류로 보입니다. 이러한 점 때문에 인스타그램에서도 따로 탭을 두어서 관리하는가 싶기도 합니다만 이를 해결할 방법이 있을까요?어렵다면 팔로워 목록에서 내가 팔로잉 하는지 여부를 표기하는 인스타그램 페이지는 어떻게 구현해야 할까요?
-
미해결[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
ModularGameplay 순서 관련 질문 드립니다.
아래와 같은 지점에서 저는 문제가 발생을 계속 하고 있는데 혹시 이유를 알수 있을까요?? 모듈러 로그를 활성화 하여 ContinueInitStateChain 쪽 로그 입니다. LogModularGameplay: Verbose: ContinueInitStateChain: Cannot transition B_SimpleHeroPawn_C_0:Hero (role 3) from InitState.DataAvailable to InitState.DataInitializedLogModularGameplay: Verbose: ContinueInitStateChain: Transitioning B_SimpleHeroPawn_C_0:PawnExtension (role 3) from InitState.DataAvailable to InitState.DataInitializedLogModularGameplay: Verbose: ContinueInitStateChain: Transitioning B_SimpleHeroPawn_C_0:PawnExtension (role 3) from InitState.DataInitialized to InitState.GameplayReadyLogModularGameplay: Verbose: ContinueInitStateChain: Cannot transition B_SimpleHeroPawn_C_0:Hero (role 3) from InitState.DataAvailable to InitState.DataInitializedLogModularGameplay: Verbose: ContinueInitStateChain: Cannot transition B_SimpleHeroPawn_C_0:Hero (role 3) from InitState.DataAvailable to InitState.DataInitialized Cannot transition 이 발상한 조건문 체크는// DataAvailable -> DataInitializedif (CurrentState == InitTags.InitState_DataAvailable && DesiredState == InitTags.InitState_DataInitialized){// PawnExtensionComponent가 DataInitialized될 때까지 기다림 (== 모든 Feature Component가 DataAvailable인 상태)//return CLMPS && Manager->HasFeatureReachedInitState(Pawn, UCLMPawnExtensionComponent::NAME_ActorFeatureName, InitTags.InitState_GameplayReady);return CLMPS && Manager->HasFeatureReachedInitState(Pawn, UCLMPawnExtensionComponent::NAME_ActorFeatureName, InitTags.InitState_DataInitialized);} 라이라 원본으로 정상 작동을 진행하는데 코드를 몇번을 수정을 하여도 진척도가 없는데 혹시 원인을 알수 있을까요? InitState_GameplayReady 태그를 사용할 경우에는 정상 동작 합니다..
-
미해결빅데이터 분석기사 시험 실기(Python)
10강 연습문제
1) X_train, X_test, y_train, y_test = train_test_split (df.iloc[:, 1:], df['survived'], test_size = 0.2, random_state = 42, stratify = df['survived'])로 되어야 하는거 아닌가요? 연습문제에서 df만 하셨는데, 그렇게 하면 이미 답이 변수에 포함되어있어서 정확도가 1로 나옵니다. 2) 전처리 다 하고나서 저 train_test_split를 수행해도 되나요? 전처리 할 때 X_train, X_test 두번씩 꼭 해줘야 하는게 번거롭고 실수가 날 것 같아서요.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
스프링 추상화 질문(exTranslator.translate)
안녕하세요 김영한 강사님. 질문 있습니다!질문: JDBC 기술 외에 어떻게 스프링 예외 추상화를 적용시킬 수 있는지. exTranslator.translate를 통해서 스프링 예외로 변환하는 것은 편한 것 같습니다. 그런데 MyBatis나 JPA 같은 기술을 사용할 땐 어떻게 사용해야할 지 감이 안오네요JPA는 제가 잘 모르지만 SQL문을 JDBC 처럼 직접 작성해서 pstmt를 통해 보낼 것 같진 않고, MyBatis는 Mapper.xml를 통해 SQL문을 작성하게 되는데 어떻게 스프링 예외 추상화를 적용 시킬 수 있을지 궁금합니다.
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
visual studio 2022에서 언리얼5 코드 smart하게 작성하는 방법
강사님 화면의 visual studio에서는 간단하게 헤더파일 #include "HakGame/Character/HakPawnExtensionComponent.h" 등 이 즉시 추가 되더라구요. 그렇게 슉슉 추가할 수 있는 방법이 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
메모이제이션을 사용한 TSP 문제에서 계산을 생략하는 원리
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.TSP 문제를 동적 계획법(DP)과 메모이제이션으로 풀 때, 이미 방문한 경로의 최적 비용을 어떻게 활용하여 계산을 생략하는지 궁금합니다. 구체적으로는, dp 테이블을 사용해 한 번 계산한 경로에 대한 비용을 저장하고, 이후에 같은 경로를 다시 탐색할 때 그 값을 재사용하여 계산을 건너뛸 수 있는 원리에 대해 설명 부탁드립니다. 제가 이해한 바로는, 미래 경로(마지막 인덱스를 찍고)에 대한 최적 비용이 이미 dp 테이블에 저장되어 있기 때문에, 더 이상 그 경로를 끝까지 가지 않아도 된다는 것입니다. 예를 들어, tsp(2, 7)을 한 번 계산하고 나면, 다시 tsp(2, 7)이 호출될 때 다시 계산하지 않고 dp[2][7]에 저장된 값을 사용하는 방식입니다. (visited 7 에 해당하는 정점을 방문한 here = 2에서부터 시작해서 마지막까지 순회한 최적 비용을 이미알기 때문에) 이렇게 불필요한 계산을 패스함으로써 계산 속도를 크게 향상시킬 수 있다는 개념이 맞나요?
-
미해결웰컴 투 태블로 월드
섹션1 3강 테이블명이 한글로 나옵니다
안녕하세요 강사님 항상 좋은 강의 감사합니다다름 아니라 섹션1-3강에 최근버전 알려주신대로 도움말-엑셀러레이터-슈퍼스토어-예측으로 들어갔는데사진처럼 테이블명들이 강사님 화면이랑 다르게 한글로 나옵니다 언어설정을 영어로 해도 해당 내역은 한글로 나오는데..그래서 강의를 완전히 100프로 따라가기가 어려운데 ㅠㅠ 해당 부분은 어떻게 해결하면 될까요?미리 답변 감사드립니다
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
글로정리된 섹션문의
글로만 정리된 섹션은 pdf 제공안될까요?핸드폰 화면으로 수강중이라 해당내용을 보기엔한눈에 들어오지 않아 학습이 좀 어렵습니다.프린트물로 보려고 해도 해당페이지는 1페이지만 인쇄되기 때문에 파일로 모아서 올려주시면 학습에 도움이 될 것 같습니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
혹시 현재 제어중인 hwpx파일의 xml을 불러올 수 있을까요?
★새로 연 빈 문서의 xml을 불러오는 방법만 알고싶습니다.★ 기존문서는 zip -> sele..?0.xml을 열면 되서 상관없는데,저장되지않은 새 문서는 어떻게 하는지 궁금하네요 ㅎㅎ -> 이걸로 해결했습니다.hwp.GetTextFile(Format="HWPML2X", option="") # 이외 추가질문입니다. 이번주 목요일 5기 강사로 가시는데, 아쉽게도 신청을 못했네요 ㅠㅠ 역시 다음 기회를 봐야겠죠?
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
송신 패킷 크기 관련해서 질문드립니다!
클라이언트에서 송신 관련해서 묶어서 보내는 코드를 설명하실 때 서버 코드에서도 이렇게 하는 게 좋다고 하셨는데 자세한 이유가 궁금합니다!MSS 한도에서 최대한 패킷의 크기를 크게 잡아야 NODELAY 옵션을 쓰지 않고도 패킷이 전송 지연을 최소화할 수 있어서 일까요~?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
값 타입의 필드들에 final
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]값 타입의 클래스에 setter를 제공하지 않아도 변경 불가능하도록 할 수 있지만, 필드들에 final을 붙이는 것 또한 괜찮지 않을까요?대신 기본생성자도 만들 기 위해서 @NoArgsConstructor 옵션을 사용 할 수 있을 것 같습니다.최종 형태입니다@Embeddable @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED, force = true) @RequiredArgsConstructor public class Address { private final String city; private final String street; private final String zipCode; }이런식으로 만들어도 될까요? 또 force 옵션을 쓰게 되면 리플랙션/프록시 기술에 영향을 주어서 쓰면 안되는 형태일지 궁금합니다
-
미해결실전! 스프링 데이터 JPA
단순 조인과 페치 조인에 대한 추가 질문입니다.
안녕하세요.강의 항상 잘 보고 있습니다. 아래 두 질문 보고 이해가 안 되는 부분이 있어 질문 드립니다. https://www.inflearn.com/community/questions/33719/fetch-join-vs-joinhttps://www.inflearn.com/community/questions/1364411/%EB%8B%A8%EC%88%9C-%EC%A1%B0%EC%9D%B8%EA%B3%BC-%ED%8E%98%EC%B9%98-%EC%A1%B0%EC%9D%B8%EC%97%90-%EB%8C%80%ED%95%B4-%EC%A7%88%EB%AC%B8-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4아래처럼 페치조인 사용하지 않고 member와 team을 select해서 가져올 경우에는 lazy 쿼리가 발생할 수 있다고 이해했습니다.@Query("select m, t from Member m join m.team t") List<Member> findInnerJoin(); team을 select하면 영속성 컨텍스트에도 team의 모든 pk가 저장되면서 lazy 쿼리가 발생하지 못하는 것은 아닌가요? 첫번째 링크 질문의 "이번 예제가 좀 특수한 경우고, 일반적으로 team이 영속성 컨텍스트에 미리 존재하는 경우는 드물기 때문에" 라는 답변에서 어떻게 team이 미리 존재하지 않는 경우가 생길 수 있는지 궁금합니다...
-
해결됨김영한의 실전 자바 - 중급 1편
자바 질문은 아닙니다. 흥미(공부)에 대하여?
안녕하세요.궁금증이 생겨서 질문을 남깁니다.개발 관련된 유트브 및 책을 어는 순간 저가 웃고 있는 순간을 발견 하게 됩니다.(저번에 Davied님 추천해준 책을 도서관에 읽 을때 웃고 있고, 라이브 방송 때 어느 순간 고개를 끄덕이거나 댓글을 달고 싶다던가 그러더라고요.)그런데, 개발 공부에 대해서는(java를 공부 하고 있으니 java랑 관련 있기는 한 가요??) 여러 번 들어서 그런 건지 모르겠는데, 좀 하기 싫어진다는 생각을 하게 되더라고요.왜 이렇게 문법이나 써야 하는지 어느 정도 이해는 하고 있고(이런것 때문에 재미 있다는 생각이 들기도 하고, 좀 연결된게 많다는 생각이 들어서 흥미가 생깁니다), 여러번 들어야, 저가 공부 한것을 모방해서 쓸 수 있다는 생각을 갖고 있으면서 도요.개발 방송 이나 책 등을 보면 나도 빨리 공부해서 이런 개발자가 되어야지 라는 생각을 갖고 있으면서도, 이런 이중적인 생각을(공부를 하기 싫다는 생각 | 공부를 해야 한다)하고 있어서, 어떻게 해야 할지 저는 모르겠네요. 이럴 때는 어떻게 해야 하나요?수정1 : 어순이나. 전달 내용이 이상해서 수정답변 부탁 드립니다.
-
미해결빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술
Chrome 대신 Chromium을 사용해도 문제가 없을까요??
안녕하세요 섹션2 실습 파트에서 Selenium을 하려던 도중 문제가 생겨 질문을 드리게 됐습니다현재 맥북 m3을 사용하고있고 UTM을 통해 Ubuntu를 설치했습니다. Chrome을 설치하려고 했더니 "Google Chrome은 amd64용으로만 패키징되었으며 ARM에서는 사용할 수 없다"라고 나와있습니다.. 그래서 arm64로 쓸 수 있는 Chromium을 사용하려 하는데 혹시 Chromium을 사용해도 수업을 진행하는데 문제없을 까요..?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
질문 있습니다...
혹시 만약에 인벤토리을 관리할떄 서버가 아닌 클라에서 아이템 관리를 위해 아이템객체들을 전부 스마트포인터를 써야할지... 포션같은 소모아이템 떄문에 써야되지 않을까 하는데 너무 고민입니다. 현업에서도 GC를 적극적으로 사용을 하는지서버가 있는데 AI 인공지능을 쓰는 경우가 있다면 어느 경우인지 이렇게 질문 3개입니다...
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
자바 질문
자바 강의중에 같지만 다른것에서 5분29초 화면에서 int랑 Integer 같다고 하셨는데 왜 같은지 자세하게 어떻게 같은지 알수있나요?
-
미해결2025년 CPPG 개인정보관리사 자격증 취득하기 (개정안 반영)
질문 있습니다.
고정ㆍ이동형 영상정보처리기기 강의 9분 18초에는 시행령 제27초의3에 따라서 이동형 영상정보처리기기가 허용된 경우에 촬영할 때는 불빛, 소리, 안내판, 안내서면, 안내방송으로 표시하라고 나오는데 경찰관의 바디캠에는 그런게 없는 것 같은데 원래 알려야하는 것 아닌가요?