묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S vector선언 관련 질문 드립니다 :)
안녕하세요 선생님 🙂 그동안 풀었던 문제들을 마지막으로 점검하고 있는데요, 아무 생각없이 지나갔던 개념이 있더라구요. 그동안 풀었던 그리디 문제를 생각해보면, overflow 방지를 위해 아래처럼 vector의 크기를 미리 N으로 정해두었습니다.cin >> N; vector<pair<int, int>> vec(N);이렇게 선언한다면, 제가 알기로 vec은 N만큼의 크기를 가지면서, 요소를 채워넣지 않으면 컨테이너 내부에 어떤 값도 존재하지 않는 것으로 알고 있습니다. 아래는 2-S 문제에서 선언된 vector입니다. 이 문제와 더불어, 다익스트라에서 가중치와 도착 지점을 저장해주는 adj vector는 같은 형태를 띄고 있습니다.vector<int> vec[10004];이렇게 선언한다면 vec은 배열처럼 10004개의 칸이 생기며, 전역에서 생성할 경우에는 모든 칸이 0으로 초기화되는 것으로 알고 있습니다. 이 형태를 1번으로 변경을 하면서 'DFS함수에 파라미터로 vec을 넣어주면 되겠다'라는 생각으로 접근을 했는데요, 시작하자마자 에러가 발생했습니다. 혹시 vector<int> vec[10004]과 같은 형태는 vector<vector<int>>와 같은 타입인걸까요?이유가 무엇인지 알고싶습니다..!!
-
미해결Practical Testing: 실용적인 테스트 가이드
외부 라이브러리를 사용하는 코드의 테스트 코드에 대해 질문이 있습니다.
강의를 보고 기존 프로젝트에 작성하지 않았던 테스트 코드를 작성하면서 공부하고 있습니다.도메인 모듈같은 경우 어떠한 의존성도 가지고 있지 않은 POJO 형태로 코드를 작성해서 단위 테스트로 검증할 수 있었습니다.Crawling 모듈의 경우 Jsoup이라는 라이브러리를 사용하여 특정 URL의 HTML을 불러오고, 해당 HTML에서 필요한 정보를 추출하는 코드를 가지고 있습니다.이때, 전체적으로 Mock을 사용하여 테스트를 진행하고자 하였는데 라이브러리의 특성 때문에 stubbing을 작성하는데 불편함을 느꼈습니다.그래서 HTML을 임의로 만들고, HTML을 불러오는 메서드만 stubbing을 적용하려고 하는게 더 효율적이지 않을까 라는 생각이 들었습니다.외부 라이브러리를 사용하는 코드에서 테스트 작성이 미숙한 것 같아서 어떤 방향이 더 좋을지 질문드리고 싶습니다. 아래 두 코드는 동일한 테스트를 진행하고 있는 코드가 아닌점 참고바랍니다.@Mock private lateinit var webPageLoader: WebPageLoader<Document> @InjectMocks private lateinit var dietParser: DietParser fun parse() { // given val mockDocument = mock(Document::class.java) val mockRows = Elements() val row1 = mock(Element::class.java) val row2 = mock(Element::class.java) val row3 = mock(Element::class.java) mockRows.add(row1) mockRows.add(row2) mockRows.add(row3) val columns1 = Elements( mock(Element::class.java).apply { given(text()).willReturn("2024.10.23") }, mock(Element::class.java), mock(Element::class.java), mock(Element::class.java).apply { given(text()).willReturn("Menu 1, Menu 2") } ) val columns2 = Elements( mock(Element::class.java).apply { given(text()).willReturn("교직원식당") } ) val columns3 = Elements( mock(Element::class.java).apply { given(text()).willReturn("2024.10.24") }, mock(Element::class.java), mock(Element::class.java), mock(Element::class.java).apply { given(text()).willReturn("Menu 3, Menu 4") } ) given(webPageLoader.getHTML(anyString())).willReturn(mockDocument) given(mockDocument.select(anyString())).willReturn(mockRows) given(row1.select(anyString())).willReturn(columns1) given(row2.select(anyString())).willReturn(columns2) given(row3.select(anyString())).willReturn(columns3) // when val result = dietParser.parse() // then assertThat(result).hasSize(2) .extracting("date", "menus") .containsExactly( tuple(LocalDate.of(2024, 10, 23), listOf("Menu 1", "Menu 2")), tuple(LocalDate.of(2024, 10, 24), listOf("Menu 3", "Menu 4")), ) } @Mock private lateinit var webPageLoader: WebPageLoader<Document> @InjectMocks private lateinit var parser: DepartmentNoticeParser fun parse() { // given val html = """ <table class="board-table"> <tbody> <tr> <td class="td-num">2</td> <td class="td-subject"><a href="javascript:fnView('2','url','title','2')">공지 제목 2</a></td> <td class="td-write">작성자 2</td> <td class="td-date">2024.10.02</td> </tr> <tr> <td class="td-num">1</td> <td class="td-subject"><a href="javascript:fnView('1','url','title','1')">공지 제목 1</a></td> <td class="td-write">작성자 1</td> <td class="td-date">2024.10.01</td> </tr> </tbody> </table> """.trimIndent() val document: Document = Jsoup.parse(html) given(webPageLoader.getHTML(anyString())).willReturn(document) parser.initialize(Major.COMPUTER_SOFTWARE_ENGINEERING) // when val notices = parser.parse() // then assertThat(notices).hasSize(2) .extracting("number", "title", "author", "date", "url") .containsExactlyInAnyOrder( tuple( 2, "공지 제목 2", "작성자 2", LocalDate.of(2024, 10, 2), "https://www.dongyang.ac.kr/combBbs/2/url/2/view.do?layout=unknown" ), tuple( 1, "공지 제목 1", "작성자 1", LocalDate.of(2024, 10, 1), "https://www.dongyang.ac.kr/combBbs/1/url/1/view.do?layout=unknown" ), ) }
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
58번 질문있습니다
반복문과 다양한 데이터 구조 활용2에서 58번 문제 질문 있습니다.이렇게 작성해도 되나요?data = {'environment': ['환경','x'], 'company': ['회사','o'], 'government': ['정부, 정치','x'], 'face': ['얼굴','x']} eng = input("영어 단어를 입력하세요 : ") for item in data.keys() : if eng == item and data[item][1] == 'x' : data[item][1] = 'o' if data[item][1] == 'x' : print(item)
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
경매 시간을 자유롭게 조정할 수 있게 만들때, 경매 시작 시간도 유저가 조정할 수 있게 만들어야 할까요
숙제로 경매 시간을 자유롭게 조정할 수 있게 구현하라고 하셨는데, 처음 사용자가 상품을 생성할 때 경매 종료 시간과 경매 시작 시간을 입력받을 수 있게 만들라는 말씀이실까요? 경매 시작 시간도 조정할 수 있게 하면 sse로 서버 시간을 매초마다 클라이언트에게 보내는 의미가 없을 것 같아 여쭤봅니다!
-
미해결루커 스튜디오(구글 데이터 스튜디오)로 배우는 데이터 시각화 입문
데이터 필터 관련 (공백 제외, 상위값)
안녕하세요.강의 수강 잘 마쳤습니다. 감사합니다. 루커스튜디오 활용해서 대시보드 만드는 중 필터 사용이 필요한데, 방법 알려 주시면 감사하겠습니다.아래 2가지 질문 드립니다. 1. 공백인 값 제외데이터에서 (not set)이 아닌 공란으로 표시되는 항목이 있습니다. (null 제외해도 안 됩니다.)해당 항목은 뜨지 않도록 하고 싶은데 필터에서 어떤 식으로 적용하면 될까요? 2. 특정 측정항목 값에 대한 상위값예를 들어, 총 사용자 값의 상위 10개 혹은 몇% 이런 식으로 필터링할 수 있는 방법이 있을까요?단순 부등호(>, <)가 아닌 정규식을 활용해서 상위 값을 발라낼 수 있을지 궁금합니다. 이상으로 확인 부탁드립니다. 감사합니다.
-
해결됨데이터베이스 중급(Modeling)
강의 교재가 어디에 있나요?
강의 교재가 제공된다고 하셨는데 강의 교재가 어디에 있나요?
-
해결됨화이트해커가 되기 위한 8가지 웹 해킹 기술
DVWA 해결책 부탁드려요
자꾸 로그인이 안됩니다Could not drop existing databaseSQL: Error dropping database (can't rmdir './dvwa', errno: 39 "Directory not empty")라고 만 떠요 해결책 있을까요?..
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
타겟 데이터 분리
안녕하세요.데이터 전처리 단계에서 target = train.pop('target') 타겟 처리하는 방법과검증 데이터 분리 단계에서 이렇게 하는 방법 중에 어떤방법을 선택하던 결과에 영향이 없나요? 그리고 데이터 전처리 시에 target분리할 경우에 target 데이터가 수치형이나 범주형 상관 없이 데이터 전처리 전에 분리하면 되는건지요?
-
미해결김영한의 실전 자바 - 기본편
참조형변수 메서드 대입과 관련해 질문이 있습니다.
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]객체와 같이 참조형 타입의 변수를 메서드의 매개인자로 넘기게 되면 값이 "복사"되어 넘어가는 것 이라고 이해했습니다.그럴경우, 다음의 코드를 실행 했을 때 출력되는 결과는"abcd" 입니다.참조 값도 마찬가지로 "복사"를 통해 넘기기 때문에 가능한 부분일까요?public static void main(String[] args) {String str = "abcd";changeStr(str);System.out.println(str);}public static void changeStr(String str) {str = new String("new String!");}
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Session #1에서 owner를 이용한 레퍼런스 관련한 부분 질문입니다.
몇 년 전에 강의를 들었을 때 느꼈던 거랑 요새 다시 들으면서 느끼는 게 많이 다르네요. 새삼 코드 퀄리티가 너무 좋습니다. 감사합니다.레퍼런스 카운트 관련해서 궁금한 점이 있습니다. Session 객체는 Service의 sessions에서 관리하는 한, 비동기 IO 작업 중에 메모리가 해제될 일은 없을 거라고 생각되는데요.그럼에도 불구하고 이벤트 객체에 owner 객체를 둬서 레퍼런스 카운트를 1을 올려놓은 채로 작업을 진행하는 건 정말 혹시 모를 상황에 대한 대비일까요?연결이 끊어져야 sessions에서 세션 객체를 꺼내니까(~Session 소멸자 호출 확인) 웬만한 상황에서는 비동기 IO 중에 세션 객체가 날아갈 일은 없을 것 같단 생각이 들었습니다. 만약 그 상황에 대한 대비라면 지금 구조에서는 ProcessRecv가 시작하자마 nullptr으로 밀어버리는 것도 RegisterRecv()를 호출하기 직전으로 옮겨야 하지 않나 하는 생각도 들었습니다. 고견을 듣고 싶습니다!감사합니다!
-
미해결시작하는 PM들을 위한 필수지식
영상 재생이 안됩니다.
나. 실무 현장에서 PM되는 법 부터영상 재상이 안됩니다. 확인 부탁드립니다.
-
미해결스트림릿(Streamlit)을 활용한 파이썬 웹앱 제작하기
네이버 clover studio가 계속 에러가 나네요
mbti부터 전혀 실행이 안되요;;
-
미해결Practical Testing: 실용적인 테스트 가이드
테스트 given절 작성 시, "팩토리 메서드를 통한 생성 지양" 관련 문의
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 강의에서 테스트 given절에서 팩토리 메서드를 통한 객체 생성은 어떠한 의도가 들어갈 수 있으므로 지양하라고 하셨습니다. 관련하여 질문이 있습니다. 예를 들어 다음과 같은 팩토리 메서드가 있다고 하면,public class Coffee { private String type; private int size; public Coffee(String type, int size) { this.type = type; this.size = size; } }public class SeasonalCoffeeFactory { public static Coffee createCoffee(String season) { switch (season.toLowerCase()) { case "summer": return new Coffee("Iced Coffee", 50); case "winter": return new Coffee("Hot Coffee", 30); case "spring": return new Coffee("Latte", 40); case "fall": return new Coffee("Pumpkin Spice Latte", 45); default: throw new IllegalArgumentException("Unknown season: " + season); } }}여름 시즌 커피에 대한 테스트 코드는 다음과 같을 겁니다. @Test public void testCreateSummerCoffee() { Coffee coffee = SeasonalCoffeeFactory.createCoffee("summer"); assertEquals("Iced Coffee", coffee.getType()); assertEquals(50, coffee.getSize()); } 이때 테스트 코드는 시즌에 맞는 커피 메뉴를 given절에 생성한 후 타입 일치여부만 판단하면 됩니다.하지만 이 부분을 팩토리 메서드로 작성하지 않게되면커피를 생성함에 있어if ("summer".equalsIgnoreCase(season)) { coffee = new Coffee("Iced Coffee", 50); } else if... 와 같은 부분이 테스트 코드의 given절에 들어가야하지 않나 싶습니다. 물론 이런 부분에 대해서 if라는 논리구조가 들어갔으니 한번 더 테스트 코드 메서드가 분리되어야하는건가 싶기도 한데 확신이 잘 안 서서 질문 드리고 싶습니다.긴 글 읽어주셔서 감사합니다.
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
드론 s450 모터 질문입니다!
강의 끝까지 잘 수강하고 수동비행 테스트를 해보려고 했는데 프레임이 강의랑 다르게 s450이여서 더 무거워서 그런지 모터를 돌려도 드론이 뜨지를 않습니다. 그래서 모터코드 부분을 수정하려고 하는데 ccr부분만 고치면 되는걸까요?? 12-2강 강의를 듣고 코드를 그대로 사용했지만 조종기 쓰로틀을 중앙으로 위치하면 모터가 빠르게 회전하지만 위로 올리면 모터 속도가 줄어들더라고요. 배터리를 11.1v, 1300mah, 60C+를 사용하는데 배터리 전류 문제인가 코드 수정 문제인가 궁금합니다!
-
해결됨친절한 블렌더 - [LV.2] 모델링 연습
창문 23:43
안녕하세요~ 수업 늘 잘 듣고 있습니다!창문을 만들다가 난관에 봉착해서요 ㅠㅠ복사해서 채우기 하라고 하셨는데 전 채우기 하니 이상한 모양이 나오네요..일단 복사하면 전 이렇게 복사 떠지구요.. 이걸 채우기 했더니 이렇게 되네요... 강의 동영상에서는 그냥 써클 원으로만 복사가 떠지던데 저는 왜 솔리디파이가 된 모습으로 복사가 떠지는건지... 근데 원래 복사하면 솔리디파이 된 모습 그대로 복사가 되는거 아닌가요??
-
미해결단 2주간 키운 블로그로 월 80만원 용돈 벌기
수강후기남겼어요
너무 재미있게 들었어요 감사합니다자료부탁드립니다.yuan8833@naver.com
-
해결됨남박사의 파이썬으로 봇 만들기 with ChatGPT
본 강의 46째 라인에서 오류가 발생하지 않는 이유가 뭔가요?
if timeMin is not None: if isinstance(timeMin, str): timeMin = datetime.strptime(timeMin, "%Y-%m-%d") timeMin -= timedelta(hours=9) url += f"&timeMin={timeMin.isoformat("T")}Z" 마지막 줄을 실행하면 원래 쌍따옴표 내 쌍따옴표라서 오류가 떠야 하는데, 영상에서는 오류가 없습니다. 반면 제 환경에서는 예상대로 오류가 발생했고, 혹시 몰라 강사님 코드 원본을 실행해 봐도 같은 오류가 발생했습니다. 오류 해결법이 아니라, 왜 영상에서는 해당 오류가 발생하지 않는지 궁금합니다!
-
해결됨
실행에 관한 질문입니다.
스프링 프로젝트를 다운 받고 아래 와 같이 intellij IDEA로 변경 후 실행하니종료 코드 0(으)로 완료된 프로세스 라는 메시지와 함께 종료가 됩니다. 그래서 기존과 같이 gradle로 변경 후 실행하니서버는 잘 실행이 됩니다만... 저 hello-spring 부분이 계속 실행되면서 시간이 계속 늘어납니다. 왜 그런지 혹시 알 수 있을까요???? 현재 spring boot 3 버전으로 학습 진행하고 있는데 그 부분이 문제일까요?
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
동일한 fetch 경로에 대해 cache 옵션만 변경된다면 어떻게 적용되나요?
all books 를 가져오는 fetch 에서 한부분은 no-store 로 적용되고 한 부분은 force-cache 로 적용된다고 했을 때 한 부분이 no-store 이기 때문에 force-cache 한 부분도 계속 갱신되어질까요?
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
searchParams 및 params 의 사용법이 변경된 것 같습니다.
기존처럼 사용하면 빌드시 타입 오류가 나와서 따로 type을 Promise 로 만들어 사용해줘야 하는 듯합니다. nextjs 링크도 첨부해두었습니다. https://nextjs.org/docs/app/building-your-application/upgrading/version-15#params--searchparams참고로 search/page.tsx 에서 searchParams 를 다음과 같이 타입 적용해주었더니 정상 빌드되었습니다. type SearchParams = Promise<{ q?: string }>;