본문 바로가기

분류 전체보기154

[SWEA] 1949. 등산로 조성 문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PoOKKAPIDFAUq 2019년 12월 27일 2시 30분부터 2문제 (등산로 조성과 수영장 문제)를 시도해보았습니다. 이번에 선택된 문제들은 상대적으로 쉬운 문제들이라 5시가 되기 전에 풀 수 있었습니다. 이번 문제도 아주 전형적인 dfs라고 볼 수 있습니다. 가장 높은 곳에서 시작하여 만들 수 있는 등산로중 가장 긴 등산로를 찾는 것이 문제입니다. 또 하나의 특징은 한 지점을 선택하여 최대 k만큼 산을 깎을 수 있다는 것입니다. 물론 깎지 않아도 무방합니다. 저는 무식한 방법을 택했습니다. 모든 지점을 0~k만큼 깎아보고 가장 높은 지점에서 시.. 2019. 12. 27.
1. 연산자 오버로딩 정의 및 사용하기 우리가 사용할 수 있는 연산자는 정말 다양하죠. + , - , * 등등 많습니다. 이런 연산자들은 기본 자료형에서만 사용이 가능합니다. 즉 우리가 class나 struct를 사용하여 만드는 사용자 정의형으로는 연산자를 이용할 수 없습니다. 왜냐하면 컴파일러 내부에 정의되어 있지 않기 때문입니다. 따라서 우리는 우리가 만든 자료형에 연산자를 사용하기 위하여 연산자 오버로딩을 하게 됩니다. 다음은 그 간단한 예시 입니다. 사용자가 정의행 Point형 객채 p1 과 p2에 덧셈연산이 가능해졌습니다. 10 ~ 17라인까지의 연산자 오버로딩이 없었다면 불가능한 일입니다. Point 객체 두개에 덧셈 연산이 일어나게 되면 컴파일러는 Point 클래스에 정의되어 있는 operator+() 멤버 함수를 호출하게 되고 .. 2019. 12. 27.
0. const에 관하여 STL 공부에 앞서서 STL에 필요한 C++문법을 다시 한번 짚고 넘어갑니다. 그 중 하나가 바로 const에 관한 것 입니다. 책의 순서와는 상관이 없지만 앞으로의 내용을 이해를 위해 가장 먼저 배치 해보았습니다. 코드를 보시면 아시겠지만 GetX()와 GetY() 멤버 함수는 const함수입니다. 즉 함수 내부에서 멤버 변수 값을 바꿀 수 없다는 말입니다. 다음 포인트는 const 객체로 선언이 되어 있는 p1객체입니다. const객체는 초기에 설정된 멤버 변수 값을 바꿀 수 없습니다. 따라서 const 객체 p1은 const가 선언되어 있는 멤버 함수만 호출이 가능합니다. const 객체가 아닌 p2는 어떠한 멤버 함수든 호출이 가능하지만 p1은 const가 선언되어 있는 멤버함수인 GetX()와 .. 2019. 12. 27.
STL 공부 개요 2019년 12월 27일 부터 STL 공부를 시작했습니다. '뇌를 자극하는 C++ STL' 책으로 공부를 시작했습니다. 개인적으로 STL에 대한 공부가 부족하다고 생각하여 시작했습니다. 평소 알고리즘 문제를 풀면서 STL을 조금씩 써왔지만 그때 그때 필요한 것만 검색하여 쓰다보니 제대로 된 틀이 잡히지 않은 상태였습니다. 확실히 이해를 하고 알고리즘 문제를 풀면 구현력과 제 프로그램의 성능을 훨씬 높일 수 있겠다는 생각이 들어 시작했습니다. 2019. 12. 27.
[SWEA] 1767. 프로세서 연결하기 2015-12-26 오후 2시 30분 부터 5시까지 시도해보았던 문제입니다..... 3시간동안 2문제를 풀어보려고 했으나 이문제도 풀지 못하고 끝나버렸습니다. 밑의 코드는 첫 제출에서 6개의 테스트 케이스만을 맞추고 시간초과에 걸렸습니다. 딱 봐도 코드가 더럽고 한눈에 안들어오네요. 계속 시뮬레이션으로 모든 경우를 직접 만들어보려고 집착했던게 큰 것 같습니다. 벡터도 사용하고 불필요한 과정을 여러 번 거치다 보니 시간초과가 난 것 같습니다. 구글링으로 코드를 참고하여 제가 직접 짜본 코드입니다. 확실히 코드도 짧고 눈에 잘들어오네요. 복사를 해서 탐색하지 않고 제대로 된 dfs방식으로 탐색하게 됩니다. 직접 map에 전선을 연결하고 끊어보는 과정이 중요하겠네요. 모든 정보를 벡터를 통해 저장하지 않고 단.. 2019. 12. 26.
[BOJ] 3980번 선발 명단 문제 출처: https://www.acmicpc.net/problem/3980 3980번: 선발 명단 문제 챔피언스 리그 결승전을 앞두고 있는 맨체스터 유나이티드의 명장 퍼거슨 감독은 이번 경기에 4-4-2 다이아몬드 전술을 사용하려고 한다. 오늘 결승전에 뛸 선발 선수 11명은 미리 골라두었지만, 어떤 선수를 어느 포지션에 배치해야 할지 아직 결정하지 못했다. 수석코치 마이크 펠란은 11명의 선수가 각각의 포지션에서의 능력을 0부터 100가지의 정수로 수치화 했다. 0은 그 선수가 그 포지션에 적합하지 않다는 뜻이다. 이때, 모든 선수의 포지션을 정하는 www.acmicpc.net 11명의 선수들이 각 포지션별로 능력치가 매겨져 있습니다. 11명의 선수들을 포지션을 잘 정해줘서 능력치의 합이 최대가 되.. 2019. 8. 20.
[BOJ] 1436번 영화감독 숌 문제 출처: https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조 www.acmicpc.net 간단하게 6이 연속으로 3번이상 나오는 수들을 작은 값부터 큰 값까지 순서를 매겨서 입력으로 주어진 순서의 수를 출력하면.. 2019. 8. 18.
[BOJ] 15683 감시 문제 출처: https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감시할 수 있는 방법은 다음과 같다. 1번 CCTV는 한 쪽 방향만 감시할 수 있다. 2번과 3번은 두 방향을 감시할 수 있는데, 2번은 감시하는 방향이 서로 반대방향이어야 하고, 3번은 직각 방향이어야 한다. 4번은 세 방향, 5번은 네 방향을 감시할 www.acmicpc.net 이번에도 구현이 난해해 보여서 건너 뛰었던 부루트 포스 감시 문제를 풀어보았습니다. 종만북을 본 이후로 자신감이 붙은 것 같아.. 2019. 8. 17.
[BOJ] 14500 테트르미노 문제 출처: https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누 www.acmicpc.net 1X1 정사각형 네개를 이어 붙혀서 만들 수 있는 모양으로 칸을 덮었을 때 덮혀진 칸들의 값의 총합이 가장 클 때를 구.. 2019. 8. 17.