프로그래밍 공부

2024/02/22 3

  • 9.3 부모를 존중하라 파생 클래스를 작성할 때는 베이스 클래스와의 연동을 고려해야 한다. 생성 순서, 생성자 체이닝, 캐스팅 같은 부분은 모두 잠재적인 버그의 온상이다. 9.3.1 부모의 생성자 객체는 그냥 생성될 수 없다. 베이스 클래스와 그에 속한 객체들이 함께 생성되어야 한다. C++는 생성 순서를 다음과 같이 정하고 있다. 클래스가 베이스 클래스를 가졌으면 베이스 클래스의 디폴트 생성자가 실행된다. 단, 파생 클래스의 생성자 초기화 리스트에서 명시적으로 베이스 클래스의 특정 생성자를 호출하고 있다면, 그 생성자가 호출된다. static이 아닌 클래스 맴버들이 선언 순서에 맞춰 생성된다. 클래스의 생성자 바디가 실행된다. 이러한 생성 순서는 재귀적으로 적용된다. 만약 클래스가 조부모를 가졌으면, ..

  • 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다. 두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변환할 수..

  • 문제 설명 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. 위 그림에서 검은색 부분은 벽으로 막혀있어 갈 수 없는 길이며, 흰색 부분은 갈 수 있는 길입니다. 캐릭터가 움직일 때는 동, 서, 남, 북 방향으로 한 칸씩 이동하며, 게임 맵을 벗어난 길은 갈 수 없습니다. 아래 예시는 캐릭터가 상대 팀 진영으로 가는 두 가지 방법을 나타내고 있습니다. 첫 번째 방법은 11..