묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨오브젝트 - 설계 원칙편
3-2 roomAt추출 버그아닌가요
void반환인데 if안에 쓰이고 있는듯 해요.boolean isRoomExist(int x, int y){ return rooms[x + y * width] != null;}이렇게 되야할 거 같은데..
-
해결됨오브젝트 - 설계 원칙편
3-2 언제 추출을 멈출까
메서드가 한가지 이유로 변경될 때까지라는 기준이 모호하기도 하고 약간 실무상으로 반대하는 입장이기도 합니다.우선 한가지 이유라면 이미 run도 한가지 이유(실행하기 위해)welcome도 인사말하기 위해이기 때문에 매우 모호합니다. 반대로 showRoom조차도 일종의 템플릿 메소드 파트와 Room이 처리하는 부분으로 나뉜 것으로 되어있죠.그런 면에서 저는 실무에서 메소드 추출을 멈추는 실제적인 기준을 변화율로 두고 있어요. 그 동네가 한꺼번에 변하냐 아니냐로 보는 방식입니다.만약 welcome수준이 한꺼번에 팀장 회의에서 갈려나가는게 일반적이라면 거기서 멈추고 showRoom에서도 room자체의 설명을 보여주는 부분만 자주 바뀌면 다시 추출하는 방식인거 같아요.
-
해결됨오브젝트 - 설계 원칙편
3-2에서 start() 추출에 대해
지역변수를 필드변수로 승격하는 것에 대한 문제를 생각하게 됩니다.기존에는 running이 지역스코프라 확실하게 문제 범위를 play라고 안심할 수 있었던 것에 비해 필드로 옮겨지면서 왠지//이건 play()에서만 사용됨boolean running;이라고 해야 할 거 같은 느낌이네요.저는 이 경우 스코프 제한을 더 우선 시 하는 편입니다만 이는 이 메소드에서는 괜찮지만 동시성이나 여러가지를 고려하면 더욱 안좋은 습관이지 않냐라는 생각도 듭니다.
-
해결됨오브젝트 - 설계 원칙편
1-1에서 질문있어요.
1-1에서 미래를 예측할 수 없어 실제로 변경이 발생했을 때 적합한 설계로 개선한다고 했는데 이게 약간 도돌이표 느낌이에요.왜냐면 설계를 선택할 때 변경될 가정을 기반으로 한다고 했기 때문입니다.즉 1. 변경 방식에 따라 설계를 선택2. 변경이 발생하면 설계를 변경아니 이러면 변경에 대응하기 위한 설계가 아니라 변경 시 마다 설계를 바꾼다는 것인데애당초 설계를 왜 한 건가 싶은 생각이 맴도는 느낌이네요.저는 설계를 코드를 변화율에 따라 재배치한다고 생각했는데 변화가 일어날 때마다 설계를 변경할 거면 그건 그냥 설계가 아니라 변경에 따라 코드를 수정한 것 같은..
-
해결됨오브젝트 - 설계 원칙편
예제 코드 여는게 너무 불편해요
30개 정도 되는 repo를 하나하나 클론해서 여는게 진짜 너무 불편합니다.폴더 하나에 다 넣어 주시거나 브랜치로 나눠서 제공해주시면 안될까요?
-
미해결카카오 코테 6주 합격! 실전 파이썬 코딩테스트
입/출력으로 모듈화를 해서 문제를 풀어보려고 하는데 방향이 맞는지 궁금합니다.
# 단어 입력 / 목록 리스트 출력 # 목록 리스트 입력 / 중복 검사 리스트에 이미 있는 요소인지 확인 후 각 요소를 다른 문자가 나오기전까지 중복 검사 리스트에 저장 # 중복 검사 리스트가 온전히 만들어진걸 카운팅 +1 입력 / 카운팅 출력 import sys input = sys.stdin.readline t = int(input()) cnt = 0 words = [] for _ in range(t): words.append(input()) for word in words: used_li = [] cur_word = '' flag = 1 for c in word: if cur_word != c and c not in used_li: cur_word = c used_li.append(c) continue if cur_word == c: continue if cur_word != c and c in used_li: flag = 0 break if flag == 1: cnt += 1 print(cnt) 헤이밥 강의를 보고 평소 풀던 방법이 아닌 모듈화로 쪼개서 풀어보려 하는데 괜찮은지..그리고 조건문을 좀 복잡하게 달아서 푼 것같은데 방법론적으로 좋은 접근인지도 조언을 구하고 싶습니다.
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
사전문제말구 수업 강의하실때 사용하시는 자료는 배포안하시나요??
사전문제말구 수업 강의하실때 사용하시는 자료는 배포안하시나요??
-
해결됨오브젝트 - 기초편
설계방법론에 관한 질문드립니다.
안녕하세요, 먼저 좋은 강의 제공해주셔서 감사합니다.설계 방법에 대한 이론적인 내용 부분에서 좀 더 명확한 정리를 하고 싶어 고견을 얻고자 질문 드리게 되었습니다.책임 주도 설계와 GRASP 지침에 따른 설계를 차례로 보여주는 방식으로 설명을 해주셨는데요, 이때 도메인의 개념을 조금 다른 시각으로 보면 그게 도메인 주도 설계(DDD) 와 유사하지 않나 하는 생각이 들었습니다 (아키텍처 부분에서도 use case 와 같은 부분은 다비 비에이라의 헥사고널 아키텍처에서 사용하는 개념과 동일한 개념이 아닌가 생각했습니다)전체적인 객체 지향 설계 방식의 흐름을 설명해주시며 연관된 다른 설계 방식의 내용을 같이 의도하여 말씀해 주신 건지 아니면 그런 한 설계 방식들을 어떻게 정리하고 계신지 고견 주시면 감사하겠습니다.*추가적으로 CRC 를 작성하실때 편리하게 사용하시는 툴 혹은 방식이 있으시다면 공유해주시면 감사하겠습니다.
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
백준 12865문제 질문드립니다.
그리디 연습문제 및 목표 문제 중에 12865번 평범한 배낭 문제가 있던데 그리디로 풀 수가 있나요? 최적의 해가 전체 최적해를 보장하지 않는데.. dp로만 풀리는 문제가 아닌가 해서 질문드립니다.
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
6강 연습문제 13137 질문있습니다.
Exchange Problem문제 질문있습니다. 이 문제를 분석하다가 어려워서 질문드립니다. 제가 분석한 결과는 dp를 통해 모든 경우의 수를 구한 것과 그리디를 통해 구한 경우의수를 비교하는 문제 같았습니다. 근데 예시를 보고 어떻게 문제를 접근해야하는지 모르겠습니다.8 1 5 10 50 100 500 1000 10000위의 예시처럼 밑의 8개의 단위로 된 동전을 통해서 모든 단위(1원~9999원)의 동전에 대해 그리디가 맞다면 yes이고 아니면 no를 택하는것인가요? 너무 어렵습니다... 혹시 파이썬 답안을 알려주실 수 있으신가요? 아니면 추가적인 강의에 대한 생각이 있으신지도 궁금합니다.
-
미해결멀티패러다임 프로그래밍 1편: 반복자 패턴 & LISP (with TypeScript, Clojure, Kotlin)
컴파일 에러
안녕하세요, 강의 잘 듣구 있습니다.다름이 아니라 reduce 가 포함된 파일을 컴파일하면 그림과 같은 에러가 납니다. 에러 해결을 위해서 아래 두 가지 방법을 시도해보았습니다. 에러메세지처럼 reduce 함수의 정의에 A extends Acc 로 명시이 해결방법은 옳지 않은 것 같다고 생각했습니다. (A -> number, Acc -> string 인 경우)else 문에 있는 baseReduce 를 Acc 타입으로 강제 캐스팅책과 강의 코드 모두 살펴봐도 크게 다른 점이 없는 것 같아 질문드립니다. 감사합니다!(제가 작성한 코드 첨부드립니다) function baseReduce<A, Acc>( f: (acc: Acc, a: A) => Acc, acc: Acc, iterator: Iterator<A> ): Acc { while (true) { const { done, value: a } = iterator.next(); if (done) { break; } acc = f(acc, a); } return acc; } function reduce<A, Acc>(f: (a: A, b: A) => Acc, iterable: Iterable<A>): Acc; function reduce<A, Acc>( f: (acc: Acc, a: A) => Acc, acc: Acc, iterable: Iterable<A> ): Acc; function reduce<A, Acc>( f: (acc: Acc | A, a: A) => Acc, accOrIterable: Acc | Iterable<A>, iterable?: Iterable<A> ): Acc { if (iterable === undefined) { iterable = accOrIterable as Iterable<A>; const iterator = iterable[Symbol.iterator](); const { done, value: acc } = iterator.next(); if (done) { throw new TypeError('reduce of empty iterable with no initial value'); } return baseReduce(f, acc, iterator) as Acc; } else { // 왜 타입변환을 강제해야하는가..?? return baseReduce( f, accOrIterable as Acc, iterable[Symbol.iterator]() ) as Acc; } }
-
해결됨멀티패러다임 프로그래밍 1편: 반복자 패턴 & LISP (with TypeScript, Clojure, Kotlin)
강의 커리큘럼 관련 질문
안녕하세요 강사님 좋은 강의 만들어주셔서 감사합니다.책도 같이 구매하였는데요 멀티프로그래밍 패러다임 책과 이 강의를 보면강사님의 다른 함수형 프로그래밍 자바스크립트, 함수형 프로그래밍 자바스크립트 응용편은 따로 보지 않아도 되나요? 혹은 다른 내용을 가지고 있어 전부 보는게 좋을까요?
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
오류
밑이 10인 log10(2)는 약 23정도 되는데 뭔가 잘못된것같습니다.
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
재귀
안녕하세요 수강자입니다.현재 2진수로 변환할때의 재귀함수 호출부분을 듣고있습니다. 1.종료조건, 2.재귀조건 3.데이터통합 으로 심플하게 나눠서 생각하는 방법 알려주셔서 감사합니다. 하지만 재귀함수를 할때, 스택의 개념을 설명해주지 않으셔서 뭔가 2% 개념이 부족한 느낌을 받았습니다. 완전 초보자 입장에서, 코드를 한줄한줄씩 공책에 써가며 결과값이 어떻게 나오는지 확인하는 과정중에, 설명해주신 개념과 풀이법이 직관적이며 머리에 쏙쏙박히기는하는데 왜 그렇지 하는 생각이 들어서요.
-
해결됨오브젝트 - 기초편
설계( DB or 도메인 ) 순서 질문
안녕하세요. 용호님 좋은 강의 만들어 주셔서 감사합니다. 강의를 통해 객체지향에 대해 많이 알게 되었습니다. 저의 질문은 용호님 께서는 신규프로젝트를 시작하실때 db설계를 먼저 완료하시는지, 도메인설계를 먼저 완료하시는지, 아니면 두 과정을 병렬로 진행하사는지 궁금합니다. 감사합니다.
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
1강 연습문제&목표문제 정답지 위치
1강 연습문제&목표문제 정답지 위치가 궁금합니다
-
해결됨실리콘밸리 빅테크 29개의 실습으로 배우는 시스템 디자인 설계
채팅을 영속할 DB로 RDB를 선택한 이유도 궁금합니다
채팅은 강결합할 트랜잭션이 불필요해보이는데 nosql을 사용 하지않는 이유는 뭘까요?
-
해결됨오브젝트 - 기초편
객체의 생성책임을 객체의 개념 자체에 부여하는 경우에 대한 의견이 궁금합니다.
안녕하세요. 코드레벨에서의 관점이 될수도 있겠지만, 객체의 생성책임을 자신의 클래스객체에 부여하는 선택지에 대한 고견이 궁금합니다.저의 경우 기존처럼 설계없이 습관적으로 코드를 짰다면, ReservationService에서 Reservation.with(screening, user, amount)로 생성하고 저장하는 형태로 작성했을것 같다는 생각이 들었고, 이게 수업에서 말씀하신 설계관점에서 생성책임부여 대상으로 괜찮은 것인지 고민이 들었습니다.제가 고려해보았을때, class객체를 예매 개념 이라고 명명하고 예매 개념이 객체의 생성책임을 부여하기 적절한 객체인지 판단해보자면,예매를 생성과 관련하여 가장 잘 알고있을것으로 생각되는 정보전문가로 보입니다.기록하거나 긴밀하게 사용하는 창조자패턴에 가장 부합하는 대상으로 보입니다.식별된 도메인모델을 기준으로 했을때는 '개념'이라는 객체가 새로 등장하게 되니 표현적차이는 상영보다는 다소 거리가 있어보이지만, 코드레벨에서 예매를 생성하라는 문맥에서 예매 class를 찾으면 되니 표현적차이를 줄임으로써 얻는 변경용이성은 해결되는것이 아닌가 생각했습니다.협력의 문맥을 책임으로 옮기고 적절한 객체를 식별한다고 할때 예매 개념 을 떠올리는건 뭔가 자연스럽지 않아보이긴 합니다.이런 판단으로 저는 예매 개념에 생성책임을 부여할것으로 판단했습니다.여기서 간과한 부분이 있거나 안티패턴은 아닌지 궁금합니다.설계가 정해진 답이있지 않고, 고차원적인 부분이다보니 판단에 대한 피드백을 받아보고싶었습니다.
-
해결됨오브젝트 - 기초편
6-5. 설계 평가하기 - 수업자료 클래스 오표기
안녕하세요. 강의 잘보고 있습니다.6-5. 설계 평가하기 수업자료에 오표기가 있어 제보 드립니다.- 영상시간: 10:55~11:06- 수업자료: 35p- 변경할 내용:AS-IS: NoneDiscountPolicyTO-BE: NoneDiscountMovie
-
미해결카카오 코테 6주 합격! 실전 파이썬 코딩테스트
1강 연습문제 복습문제1 문제 오류
문제 설명알파벳으로 이루어진 문자열 하나를 입력받아, "길이가 5 이상인 경우에만" 문자열 전체를 대문자로 변환하여 반환하는 함수를 정의하시오.길이가 5 이하라면 '길이가 5 이하입니다' 메시지를 반환합니다.예시입력: 'abc'출력: '길이가 5 이하입니다'입력: 'abcde'출력: 'ABCDE' 5이상과 5이하는 길이가 5인경우 이상,이하 모두 포함되는데길이가 5 이하라면 '길이가 5 이하입니다' 메시지를 반환합니다. -> 5 미만으로 문제 수정되야 할 것 같아요