전체 글

    [프로그래머스]level.1 - 하샤드 수(C++)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/12947 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 #include #include using namespace std; bool solution(int x) { bool answer = false; int total = 0; int tmp = x; while(tmp > 0) { total += (tmp % 10); tmp /= 10; } if(x % total == 0) answer = true; return answer; }

    프로토타입(ProtoType) 패턴

    프로토타입(ProtoType) 패턴

    { 프로토타입이란? } 프로토타입 패턴이란 GoF의 생성 패턴 중 하나로, 원본 객체(프로토타입)를 복제하여 객체를 생성하는 패턴이다. { 게임 개발에서 프로토타입 활용하기 : 몬스터 대량 스폰하기 } 위 게임을 보면 수많은 몬스터들이 대량 생성되어 있다. 이런 몬스터 생성 코드를 어떻게 하면 간단하게 작성할 수 있을까? 몬스터 스포너에 프로토타입으로 사용할 몬스터 객체를 등록해두고 복제(Clone)하여 게임 월드 상에 배치 시키면 끝이다. 프로토타입 패턴은 원본 객체를 복사할 때 프로토타입의 클래스 뿐만 아니라 상태도 같이 복제한다. 이 말은 몇 개의 속성을 변경하는 것만으로도 하나의 프로토타입에서 다양한 종류의 객체를 생성할 수 있다는 것이다. 예를 들어 애니메이션 정보만 바꿔 다른 외형을 가진 몬스..

    [프로그래머스]level.2 - 택배 상자(C++)

    [프로그래머스]level.2 - 택배 상자(C++)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 첫번째 풀이 첫번째는 그리디로 풀었는데 vector.erase()를 반복문으로 사용해야 해서 시간 초과가 났다. list를 사용하여 erase 시간 복잡도를 줄인다고 해도, list는 index를 이용한 랜덤 액세스가 불가능하기 때문에 코드가 복잡해지고 원하는 인덱스에 접근하기까지 시간이 오래걸린다. 게다가 생각하기도 힘든 풀이이다. 틀린 풀이이기 때문에 간단하게만 설명하면, 현재 박스가 ..

    [프로그래머스]level.2 - 호텔  대실(C++)

    [프로그래머스]level.2 - 호텔 대실(C++)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/155651 내 풀이 시작 시간을 기준으로 예약을 오름차순 정리한다. 방을 배정하면서 멀티셋에 다음 예약자가 들어올 수 있는 시간을 저장한다. ( 예약 종료 시간 + 10 ) 셋을 사용하는 이유는 시간을 오름차순 정렬하여 다음 예약자가 최대한 빨리 들어올 수 있는 시간을 구하기 쉽게하기 위함이다. 그 중에서 멀티셋을 이용한 이유는 예약 시간이 중복될 수 있기 때문이다. 다음 예약자를 받을 때, 멀티셋에 저장된 배정 가능한 시간 중 예약자가 입실 가능한 시간이 있다면 멀티셋에서 해당 시간을 삭제하고 새 예약자에 맞춰 배정 가능한 시간을 갱신한다. 예약자가 입실 가능한 시간이 없다면 멀티셋에서 삭제할..

    [프로그래머스]level.2 - 영어 끝말잇기(C++)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/12981#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 #include #include #include #include using namespace std; vector solution(int n, vector words) { vector answer = {0, 0}; set words_set; words_set.insert(words[0]); for(int i = 1; i < words.size(); ++i) { char c = *..