묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
삭제하기 기능 구현 레퍼런스 코드는 없을까요
게시글 상세 화면에서 삭제하기 기능을 구현해주세요.이부분에 대한 레퍼런스 코드가 깃허브에 등록된 내용에는 나오지 않는데 알고 싶습니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
메모리 초과 관련 문제
안녕하세요, 메모리 초과 관련 문제가 생겨서 질문드립니다.제가 생각한 알고리즘을 설명드리자면2중 벡터 fire의 경로를 구합니다. (bfs)2중 벡터 player의 경로를 구합니다. (bfs)fire와 player의 각 요소를 비교하여 player의 요소가 작은 경우엔 유지, 아닌 경우엔 -1로 값을 덮어씌웁니다.최종적으로 vector<vector<int>> player는 다음과 같은 값을 갖습니다.-1 -1 -1 2-1 -1 -1 1-1 -1 1 0-1 -1 -1 -1해당 player를 다시 bfs로 순회합니다. (시작점은 player의 초기 위치인 0 지점) -> 이걸 하는 이유는 혹여나 player의 길이 fire에 의해 끊기는 경우가 존재할 수 있으므로 입니다. (하지만 이런 경우는 발생하지 않는 것 같습니다.)마지막으로 player가 갈 수 있는 최종 길만 남게되고, 가장자리의 4변에서 -1이 아닌 최소값을 찾습니다.이런 알고리즘을 시행했는데 메모리 초과가 뜹니다. 메모리 초과와 관련해서는 visual studio에서 어떻게 디버깅을 해야할지 잘 모르겠습니다. 단순히 생각해보면 각 2차원 벡터는 최대 1000*1000*4byte(int)=4MB의 크기를 갖고, deque는 아마 최대로 해도 4MB 이하의 크기를 갖을 것 같은데 문제의 256MB가 왜 초과가 되는지. 모르겠습니다.아래는 해당 코드의 링크입니다.http://boj.kr/6145ffa1c073417ab06e3a7e86afe533 강의를 듣고나서는 코드를 수정하여 player의 경로를 구할 때, 미리 구해둔 fire의 경로와 비교하여 fire가 선점한 경우엔 갈 수 없는 경로로 표시하고, 순서 5의 과정을 삭제했습니다. 이러니 해결이 되긴하는데.. 이게 왜 되는건지는 모르겠습니다. 해당 코드는 메모리 10872KB를 썼다고 나옵니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요@RequestBody와 @ModelAttibute차이를 제대로 이해했는지 궁금하여 여쭤봅니다.서버로 데이터를 전달하는 방법은 3가지방법이있는데 쿼리파라미터 시에는 get방식 @RequestParam 사용HTML Form 시에는 get, post 다 지원 @ModelAttibute 사용message body 시에는post방식 @ReqeustBody 로 받아서 사용하는것이 맞을까요?각 전달 방법3가지에 get/post방식 매핑과 어노테이션 매칭이 잘 되엇는지 궁금합니다. 그리고 RequestParam , ReqeustBody 를 컨트롤러의 같은 메소드에 사용가능할까요?ex ) public void test(@RequestParam int id, @ReqeustBody Body body)같이 사용가능하다면 왜 가능한지도궁금합니다ㅜㅜ
-
해결됨디자인 시스템 with 피그마
타이포그래피 연결해제 표시
다른분이 연결해제 관련 질문을 올리긴 하셨는데 json 파일을 따로 안올리셔서 같이 첨부드립니다 ㅠ.ㅠ 왜 연결해제와 같은 표시가 뜨는 걸까요..?json 입니다.{ "140": { "value": "140%", "type": "lineHeights" }, "150": { "value": "150%", "type": "lineHeights" }, "160": { "value": "160%", "type": "lineHeights" }, "spacing": { "6": { "value": "{spacing.baseSpacing} *1.5", "type": "spacing" }, "8": { "value": "{spacing.baseSpacing} *2", "type": "spacing" }, "10": { "value": "{spacing.baseSpacing} *2.5", "type": "spacing" }, "12": { "value": "{spacing.8} + {spacing.baseSpacing}", "type": "spacing" }, "16": { "value": "{spacing.12} + {spacing.baseSpacing}", "type": "spacing" }, "20": { "value": "{spacing.16} + {spacing.baseSpacing}", "type": "spacing" }, "24": { "value": "{spacing.20} + {spacing.baseSpacing}", "type": "spacing" }, "28": { "value": "{spacing.24} + {spacing.baseSpacing}", "type": "spacing" }, "32": { "value": "{spacing.28} + {spacing.baseSpacing}", "type": "spacing" }, "36": { "value": "{spacing.32} + {spacing.baseSpacing}", "type": "spacing" }, "40": { "value": "{spacing.36} + {spacing.baseSpacing}", "type": "spacing" }, "44": { "value": "{spacing.40} + {spacing.baseSpacing}", "type": "spacing" }, "48": { "value": "{spacing.44} + {spacing.baseSpacing}", "type": "spacing" }, "52": { "value": "{spacing.48} + {spacing.baseSpacing}", "type": "spacing" }, "56": { "value": "{spacing.52} + {spacing.baseSpacing}", "type": "spacing" }, "60": { "value": "{spacing.56} + {spacing.baseSpacing}", "type": "spacing" }, "64": { "value": "{spacing.60} + {spacing.baseSpacing}", "type": "spacing" }, "baseSpacing": { "value": "4", "type": "spacing" } }, "black": { "value": "#000000", "type": "color" }, "white": { "value": "#ffffff", "type": "color" }, "blue": { "100": { "value": "#d4e2fc", "type": "color" }, "200": { "value": "#a9c5f9", "type": "color" }, "300": { "value": "#7da8f7", "type": "color" }, "400": { "value": "#528bf4", "type": "color" }, "500": { "value": "#276ef1", "type": "color" }, "600": { "value": "#1f58c1", "type": "color" }, "700": { "value": "#174291", "type": "color" }, "800": { "value": "#102c60", "type": "color" }, "900": { "value": "#081630", "type": "color" } }, "red": { "100": { "value": "#f9d1cc", "type": "color" }, "200": { "value": "#f3a399", "type": "color" }, "300": { "value": "#ed7566", "type": "color" }, "400": { "value": "#e74733", "type": "color" }, "500": { "value": "#e11900", "type": "color" }, "600": { "value": "#b41400", "type": "color" }, "700": { "value": "#870f00", "type": "color" }, "800": { "value": "#5a0a00", "type": "color" }, "900": { "value": "#2d0500", "type": "color" } }, "yellow": { "100": { "value": "#fff2d9", "type": "color" }, "200": { "value": "#ffe6b4", "type": "color" }, "300": { "value": "#ffd98e", "type": "color" }, "400": { "value": "#ffcd69", "type": "color" }, "500": { "value": "#ffc043", "type": "color" }, "600": { "value": "#cc9a36", "type": "color" }, "700": { "value": "#997328", "type": "color" }, "800": { "value": "#664d1b", "type": "color" }, "900": { "value": "#33260d", "type": "color" } }, "green": { "100": { "value": "#cde7da", "type": "color" }, "200": { "value": "#9bcfb6", "type": "color" }, "300": { "value": "#68b891", "type": "color" }, "400": { "value": "#36a06d", "type": "color" }, "500": { "value": "#048848", "type": "color" }, "600": { "value": "#036d3a", "type": "color" }, "700": { "value": "#02522b", "type": "color" }, "800": { "value": "#02361d", "type": "color" }, "900": { "value": "#011b0e", "type": "color" } }, "accent": { "value": "{blue.500}", "type": "color" }, "negative": { "value": "{red.500}", "type": "color" }, "warning": { "value": "{yellow.500}", "type": "color" }, "positive": { "value": "{green.500}", "type": "color" }, "gray": { "100": { "value": "#e1e1e1", "type": "color" }, "200": { "value": "#c4c4c4", "type": "color" }, "300": { "value": "#a6a6a6", "type": "color" }, "400": { "value": "#898989", "type": "color" }, "500": { "value": "#6b6b6b", "type": "color" }, "600": { "value": "#565656", "type": "color" }, "700": { "value": "#404040", "type": "color" }, "800": { "value": "#2b2b2b", "type": "color" }, "900": { "value": "#151515", "type": "color" } }, "positiveTransparent": { "value": "#0488481a", "type": "color" }, "negativeTransparent": { "value": "#e119001a", "type": "color" }, "scale": { "value": "1.333", "type": "sizing" }, "default": { "value": "16", "type": "fontSizes" }, "heading": { "S": { "value": "{default} / {scale}", "type": "fontSizes" }, "M": { "value": "{default}", "type": "fontSizes" }, "L": { "value": "{heading.M} * {scale}", "type": "fontSizes" }, "XL": { "value": "{heading.L} * {scale}", "type": "fontSizes" }, "XXL": { "value": "{heading.XL} * {scale}", "type": "fontSizes" }, "XXXL": { "value": "{heading.XXL} * {scale}", "type": "fontSizes" } }, "label": { "S": { "value": "{default} / {scale}", "type": "fontSizes" }, "M": { "value": "{default}", "type": "fontSizes" }, "L": { "value": "{heading.M} * {scale}", "type": "fontSizes" }, "XL": { "value": "{heading.L} * {scale}", "type": "fontSizes" }, "XXL": { "value": "{heading.XL} * {scale}", "type": "fontSizes" } }, "paragraph": { "S": { "value": "{default} / {scale}", "type": "fontSizes" }, "M": { "value": "{default}", "type": "fontSizes" }, "L": { "value": "{heading.M} * {scale}", "type": "fontSizes" }, "XL": { "value": "{heading.L} * {scale}", "type": "fontSizes" } }, "pretendard": { "value": "Pretendard", "type": "fontFamilies" }, "bold": { "value": "Bold", "type": "fontWeights" }, "semibold": { "value": "SemiBold", "type": "fontWeights" }, "\bregular": { "value": "Regular", "type": "fontWeights" }, "Heading": { "XXXL": { "value": { "fontFamily": "{pretendard}", "fontWeight": "{bold}", "lineHeight": "{140}", "fontSize": "{heading.XXXL}", "letterSpacing": "{letterSpacing.0}", "paragraphSpacing": "{paragraphSpacing.0}", "paragraphIndent": "{paragraphIndent.0}", "textCase": "{textCase.none}", "textDecoration": "{textDecoration.none}" }, "type": "typography" }, "XXL": { "value": { "fontFamily": "{pretendard}", "fontWeight": "{bold}", "lineHeight": "{140}", "fontSize": "{heading.XXL}", "letterSpacing": "{letterSpacing.0}", "paragraphSpacing": "{paragraphSpacing.0}", "paragraphIndent": "{paragraphIndent.0}", "textCase": "{textCase.none}", "textDecoration": "{textDecoration.none}" }, "type": "typography" } } }추가로 import 할 때 이런 표시도 뜹니다.
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
@Entity != RDB Table에 대한 질문입니다.
예전에 조영호님의 '오브젝트' 서적을 읽고 "어떻게 비즈니스 모델을 더 변경에 부드럽게 설계할 수 있을까?"에 고민을 했습니다. 그때의 기억으로는 "역할은 책임을 위한 최소한의 정보만 가지고 있자"라고 제가 이해를 했고 @Entity가 달린 class를 "역할"로 보고 코드 작성을 하니 1개의 RDB Table이 2개 이상의 Entity Class로 매핑이 되었습니다.평소에 1개 Entity Class가 1개 Table와 매핑하는 것과 달라 괴리감이 들었습니다. 핵사고날 아키텍쳐를 적용하면 비즈니스 모델과 JPA의 Entity를 분리할 수 있지만 팀원들과의 합의도 필요해서 적용할 수 없었고 주니어라 해당 기술 도입으로 생산성이 올라갈 것이라고 장담할 수도 없었습니다. 두서가 없이 말이 많았는데 궁금한 점은!"RDB의 1개 Table을 2개 이상의 Entity로 매핑해서 운영을 하는게 보편적인 방식인가요?" 입니다. ++ 개인적인 질문입니다만 객체의 협력 관계를 먼저 설계하는 것과 DB 설계하는 것 어떤 것이 우선인가요?
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
deployment 롤링 업데이트
deployment 를 삭제하고 다시 apply 해야 하는 이유가 뭘까요?? 그렇게 되면 중간에 삭제되고 다시 생성되기 이전에 중단이 발생하지 않나요??디플로이먼트는 변경 안해도 이미지가 바뀌면 apply 쳤을때 기본 전략으로 롤링 업데이트로 다른 리플리카 셋으로 생성되는걸로 들은적이 있는 것 같아서요!
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
리액트 프로젝트 생성시 질문
npx-create 시 에러나서user/Appdata/Roaming 경로 아래 npm폴더를 생성하고 재수행했더니 작동했는데 이유가 궁금합니다. 그리고 강사님께서 하시는 방법으로 바꿀수 있는 방법은 없을까요...? 매번 appdata로 가서 폴더 선택하는것이 번잡스러워서요...
-
미해결언리얼 엔진4 입문 (C++ 기반)
유니티 vs 언리얼 강의 중 의문점
개발쪽과 전혀 관련이 없는 분야에서 일하다가 언리얼을 배우게 되어서 기초적인 지식이 없다 보니 이해가 안되고 왜 이런걸 입력해주는지에 대한 기본지식이 없습니다.강의중 액터를 생성 후 비쥬얼 스튜디오에서 헤더파일에서 기본적으로class ~~public:~~protected:~~public:~~private: (강의중 생성)이렇게 되어 있는데 class는 어떠한 class인지에 대한 내용인 것 같은데 그 외 public:, protected:, private: 이런 것은 의미가 있어서 구분되어 있을 것인데 왜 구분되어있고 무슨 의미를 가지는지 모르겠습니다. 그리고 CPP에서Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MESH")RootComponent = Mesh;Static ConstructorHelper::FobjectFinder<UStaticMesh>~~~위와 같은 것의 용어가 가지는 의미와 언리얼에서 어떻게 반영 되어 나타나는지 그리고 문법? 구조?는 모두 외워서 입력하는 건지 등이 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-B erase(), substr() 시간복잡도 질문드립니다.
안녕하세요 선생님.선생님께서 푸신 코드가 시간복잡도가 통과되지 않을 것이라 생각하였는데 통과하여 질문드립니다.제가 알기로는 substr(), erase() 함수 모두 자르고 당기는 작업이 들어가서 O(n)의 시간복잡도가 걸린다고 알고 있는데, 반례로 문자열이 100만이 모두 같은 알파벳으로 aaa...라고 하고 폭발 문자열이 a라고 한다면 반복문을 100만번 돌면서 매번 substr()과 erase()를 해주게 되어 100만 * (O(n) + O(n)) 이 되어 시간복잡도가 넘어가는 것 아닌가요? 이 경우에 substr()과 erase()가 둘다 한개의 문자(a)만 체크하기 때문에 상수시간으로 취급하여 최대 200만이 되어 문제가 안 생기는 것 같기는 한데 뭔가 시간복잡도를 빡세게 잡는 문제가 나온다면 이러한 접근으로 erase()와 substr()을 사용한다면 시간초과가 날 수도 있지 않을까 하는 고민이 생겨서 질문드립니다! substr()과 erase()를 사용해도 시간복잡도 고려에 문제가 없을까요? 이 코드는 제가 find()와 erase()를 사용하여 푼 경우입니다. 이 경우에도 반복문을 돌리고 매번 find()와 erase()를 쓰는데, find()도 동일하게 O(n)이 걸리니까 로직이 선생님께서 푼 것과 동일하다고 판단하였는데, 아래 로직은 시간초과가 떴습니다.#include<bits/stdc++.h> using namespace std; string s, a; int main(){ cin >> s >> a; while(true){ if(!s.size()){cout << "FRULA" << '\n'; return 0;} int flag = s.find(a); if(flag != string::npos){ s.erase(flag, a.size()); } else break; } cout << s << '\n'; }
-
해결됨독하게 시작하는 C 프로그래밍
디바이스 파일에 대해서 여쭤보고 싶습니다.
안녕하세요. 강사님.입출력과 관련된 부분은 운영체제가 처리를 해주는 것으로 알고있습니다. 일반적으로 입출력을 수행할 때 OS가 제공해주는 API를 사용해서 입출력을 수행할텐데 그 행위 자체가 내부적으로 디바이스 파일을 사용하도록 구현이 되는 구조인걸까요 ?디바이스 파일을 제공해주는 것은 알겠는데 그걸 직접적으로 활용하는 코드는 다뤄본적이 없어서요...
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
props 사용 시 중괄호 질문
props를 사용해 전달 받을 때 어떤 상황에서 중괄호를 사용하고 특히 함수를 전달 받을 때 왜 중괄호가 필요한지 궁금합니다.const DiaryEditor = ({onCreate}) => {return} const DiaryList = ({diaryList}) => {return} const DiaryItem = ({author, content, create_date, emotion, id}) => {return}
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
디바이스연결시 이미지 안뜸
가상디바이스에 연결했을때는 콘텐츠 리스트에 있는 콘텐츠들의 사진이 뜨는데 디바이스를 직접 연결했을때는 이미지가 나오지 않습니다. url 문제인가요? 혹시 url 문제라면 파이어베이스의 이미지 부분에 어떤것을 넣어야하나요?
-
미해결비트코인 알고리즘 트레이딩 봇 개발
베이지안에서 질문있습니다.
pbounds = { 'revenue_rate' : (0.005,0.015), 'max_loss_rate' : (0.05,0.3), 'increase_rate' : (0.1,0.4), 'buy_cnt_limit' : (5,20), 'buy_amt_unit' : (10,20) } 여기서 buy_cnt_limit은 사실 정수가 나와야 하는데. 베이지안 최적화 후에 반올림하여 수정하는 방법밖에 없을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
REST API로 통신
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]단계별 메시지 처리는 타임리프에서만 매칭이 되나요? REST API에서는 단계별 메시지 매칭이 되지 않는지 궁금합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
엥커박스 크기 및 중복 생성 방지에 관한 질문
좋은 강의 찍어주셔서 감사합니다. 해당 강의를 토대로 공부를 하며 모델을 제작 중에 학습 후 inference_detector을 돌리고 나면 같은 물체를 여러번 잡는 문제가 발생합니다. 또한 이용중인 이미지의 크기가 작아서 인지 엥커박스의 크기가 전체 화면을 잡아주는 경우가 발생하고 있습니다. 그래서 이를 방지하고자 rpn_head의 anchor_generator를 수정해보았으나 학습이 안되는 모습을 관찰하였습니다. 사용 모델 :faster_rcnn_r50_caffe_fpn_mstrain_3x_coco.py 이때 사용 이미지의 class는 1개였습니다. 어떤 식으로 이것을 수정할 수 있을까요? 또한 어디 부분의 강의를 들었을 때 이와 관련된 내용을 알 수 있을까요?감사합니다.
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
GetComponent 할때 AddComponent 질문입니다!
항상 예외나 문제가될 사항에 준비하라고 말씀해주셧는데GetComponent 를 해서 어떤 컴포넌트를 가져올때if (GetComponent == null ){ AddComponent<>();} 이런식으로 만약 추가가안되있다면 추가해주는 방식을 추가해주는거는 어떤가요? 너무 사용이 많아져서 오버된 행동일까요??
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
씨름 O(n)으로 풀었는데 런타임 에러가 떠요
package GreedyAlgorithm;import java.util.*;public class SsireumSelection {static Scanner sc = new Scanner(System.in); static ArrayList<Body> athlete = new ArrayList<>(); static int n = sc.nextInt(); static int answer; static int maxWeight=Integer.MIN_VALUE; public static void main(String[] args) {for (int i = 0; i < n; i++) {athlete.add(new Body(sc.nextInt(), sc.nextInt())); }Collections.sort(athlete); for (Body b : athlete) {if (b.weight > maxWeight) {answer++; maxWeight=b.weight; }}System.out.println(answer); }public static class Body implements Comparable<Body> {public int height; public int weight; public Body(int height, int weight) {this.height = height; this.weight = weight; }@Override public int compareTo(Body o) {return o.height - this.height; }}}90ms~126ms, 26mb 나옵니다
-
미해결홍드로이드의 To-Do 리스트 앱 만들기
구글콘솔 광고 ID
덕분에 현재 저만의앱을 만들고 출시 직전까지 와있습니다.근데 이 강의에는 그 질문이 없는데 새롱 변경된 구글콘솔 질문에 앱에서 광고 ID를 사용하나요?라는 질문이 있는데 뭔말인지 모르겠습니다!애드몹에서 광고를 사용하는데 그거 말하는걸까요? 근데 그부분은 이미 앱에 광고가 있다는 질문이 있었는데 이거와는 뭐가 다른건가요? 일단 '아니요'클릭하긴했는데 뭔말인지 잘모르겠습니다!도와주시면 감사하겠습니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
MVC1편을듣고왔는데 바로 DB1편으로
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MVC1편을듣고왔는데 바로 DB1편으로 넘어가도되나요 ?MVC2편은 DB1편을 듣고나서 MYBATIS로 MVC1편에서 배운내용을 토대로 자그마한 토이프로젝트 하나 만들어보고 MVC2편을 듣고싶은데 그렇게 해도될까요 ?
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
feature X 와 target y
feature 표현할 때는 대문자를 써서 X_train 으로 하고target 표현할 때는 소문자를 써서 y_train 으로 작성이 되고 있는데요.대소문자를 구별해서 사용하고 있는 특별한 사유가 있나요?