728x90 전체 글 썸네일형 리스트형 [백준알고리즘] 10867번: 중복 빼고 정렬하기 -C++ [백준알고리즘] 10867번: 중복 빼고 정렬하기 -C++ 10867번: 중복 빼고 정렬하기 (acmicpc.net) 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net 사실 이번 문제는 굉장히 쉬운 문제다. 정렬 알고리즘이라고 해서 풀려고 했는데, 너무 민망할 정도의 문제다. 그래서 글을 따로 작성하지 않으려다가 그냥 기록용으로 남긴다. 문제 풀이 문제에서 요구하는 조건 중에 주목할 것은 오름차순 정렬과 중복을 제거하는 것이다. 가장 먼저 생각이 든 것은 C++의 set를 이용하는 방식이다. set는 JAVA의 HashSet과 유사한 개념이다.. 더보기 [디자인패턴][구조패턴] 데코레이터 Decorator - C++ [모던 C++ 디자인 패턴] 책을 바탕으로 공부하는 내용을 정리한 내용이다. Decorator pattern 동료가 작성한 클래스 기반으로 기능 확장을 한다고 해보자. 원본 코드를 수정하지 않고 기능을 추가하기 위한 방법 중에서 상속이 생각날 수 있다. 하지만 항상 이렇게 작업할 수 있지는 않다. 상속을 할 수 없는 여러 사정이 있을 수 있다. 무엇보다 수정하는 이유가 여러 가지인 경우에는 단일 책임 원칙(SRP)을 위반하는 것이기 때문이다. Decorator 패턴은 이미 존재하는 타입에 새로운 기능을 추가하면서도 원래 타입의 코드에 수정을 피할 수 있도록 해준다. OCP를 준수하는 것이다. 시나리오 여러 개선 작업이 필요한 상황을 생각해보자. 도형을 기반으로 색상이 있는 도형과 투명한 도형을 상속받아 .. 더보기 [디자인패턴][구조패턴] 컴포지트 Composite - C++ [모던 C++ 디자인 패턴] 책을 바탕으로 공부하는 내용을 정리한 내용이다. Composite Pattern 보통 공부할 때 Aggregation 관계와 Composite 관계는 생명주기에서 다르다고 말을 한다. 하지만, 이 책에서는 두 개를 서로 동등한 것으로 취급한다. 객체가 복수의 구성 요소로 이루어져 있다는 것을 의도적으로 사용자에게 알려줄 방법은 많지 않다. 우선, 명시적으로 멤버 변수에 대한 getter/setter를 노출하는 방법이 있다. 이때, begin/end 반복자와 같은 것으로 구성 요소의 집합이라는 것을 알려야 한다. 다른 방법으로는 컨테이너 타입을 상속받는 것이다. 하지만, STL 컨테이너는 virtual 소멸자가 없기 때문에 소멸자를 쓸 일이 없어야 한다. Composite 패턴.. 더보기 [백준알고리즘] 2589번: 보물섬 -C++ [백준알고리즘] 2589번: 보물섬 -C++ 2589번: 보물섬 (acmicpc.net) 2589번: 보물섬 첫째 줄에는 보물 지도의 세로의 크기와 가로의 크기가 빈칸을 사이에 두고 주어진다. 이어 L과 W로 표시된 보물 지도가 아래의 예와 같이 주어지며, 각 문자 사이에는 빈 칸이 없다. 보물 지도의 www.acmicpc.net 문제를 봤을 때 브루트 포스인가? 단순히 최단거리는 못 구하는데? 일단 해보자! 했다. 예전에는 너무 최단거리 문제만 풀다가 브루트 포스 문제 여부를 감을 잡지 못했었는데, 지금 오히려 눈이 넓어졌나보다. 골드라고 해서 살짝 쫄았는데 정답 비율은 생각보다 높았다. 어쩐지 어렵진 않더라.. 문제 풀이 문제는 브루트 포스 방식을 사용하면 된다. 그리고 그래프 탐색을 사용하면 된다... 더보기 [컨퍼런스] NDC(Nexon Developer Conference) (2022/06/08~06/11) 이번에는 NDC(NEXON DEVELOPER CONFERENCE) 후기를 작성해보고자 한다. 컨퍼런스 시작할 시점에는 바빠서 직접 듣지 못했지만, 아직 온라인에 많은 세션들이 올라와있다. 일부 세션만 영상이 내려간 상태라고 한다. NDC-NEXON DEVELOPERS CONFERENCE NDC-NEXON DEVELOPERS CONFERENCE ndc.nexon.com NDC를 이번에 보긴했지만, 컨퍼런스 전에 세션 목록을 보고 기대하고 있던 컨퍼런스였다. 다행히 아직도 많은 세션이 온라인으로 있었다. 보고 싶은 세션만 골랐는데도 10개나 골랐다. 그중에 오늘은 개발 관련된 5개 세션에 대해서 요약 및 후기를 작성하고자 한다. 나머지 5개는 개발이라기보다는 경력/운영/마케팅 등에 대한 세션이다. 이 세션들.. 더보기 [디자인패턴][구조패턴] 브릿지 Bridge - C++ [모던 C++ 디자인 패턴] 책을 바탕으로 공부하는 내용을 정리한 내용이다. Bridge Pattern 최근 C++ 컴파일러들은 컴파일 속도가 굉장히 빨라졌다. 번역 단위(translation unit) 전체를 생성하는 대신 변경된 정의 부분만 새로 만들고 나머지는 재활용하는 방식으로 진화했다. 과거 C++ 개발자들은 유사하게 컴파일 시간을 단축시키기 위해 독특한 관례를 사용했다. Pimpl 관례가 그것이다. Pimpl 관례 Pimpl(Pointer to Implementation)은 구현부를 포인터로 참조하는 관례를 말한다. 기술적 측면에서 어떤 역할을 수행하는지 살펴보자. 일반적으로 개인 정보를 담는 Person 클래스를 구현한다 해보자. 사람 이름을 저장하고, 인사말을 출력하는 메서드를 갖는다고 할.. 더보기 [백준알고리즘] 18111번: 마인크래프트 -C++ [백준알고리즘] 18111번: 마인크래프트 -C++ 18111번: 마인크래프트 (acmicpc.net) 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 실버 문제 치고는 정답률이 낮다. 문제를 풀면서 그럴만하다고 느낀 게 실수하기 쉬운 부분이 있다. 다만 어려워서 그런 것은 아니기 때문에 반례도 생각하면서 풀어보면 좋을 문제다. 나는 생각한 반례도 다 돌아는 갔는데.. 통과를 못해서 반례 모음이 올라온 것을 보고 잘못된 부분을 찾을 수 있었다. 그리고 최대한 함수를 작게 나눠서 작성하고 있는데, 확실히 오류 .. 더보기 [백준알고리즘] 5639번: 이진 검색 트리 -C++ [백준알고리즘] 5639번: 이진 검색 트리 -C++ 5639번: 이진 검색 트리 (acmicpc.net) 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 생각보다 애를 먹었다. 처음에 list 자료형을 이용해 splice 함수로 이리저리 preorder를 postorder로 바꾸려고 시도해봤다. 동작은 하는 것 같으나, 시간 초과/메모리 초과가 발생해 고민을 많이 했다. 그러다가 배열을 쓰는게 훨씬 빠르다는 것을 보고, 배열과 인덱스를 이용해 처리하도록 변경했다. 문제 풀이 트리 탐색 방법은 전.. 더보기 이전 1 ··· 6 7 8 9 10 11 12 ··· 50 다음