프로그래밍 공부

프로그래밍 700

카테고리 설명
  • 문제 설명 n명의 권투선수가 권투 대회에 참여했고 각각 1번부터 n번까지 번호를 받았습니다. 권투 경기는 1대1 방식으로 진행이 되고, 만약 A 선수가 B 선수보다 실력이 좋다면 A 선수는 B 선수를 항상 이깁니다. 심판은 주어진 경기 결과를 가지고 선수들의 순위를 매기려 합니다. 하지만 몇몇 경기 결과를 분실하여 정확하게 순위를 매길 수 없습니다. 선수의 수 n, 경기 결과를 담은 2차원 배열 results가 매개변수로 주어질 때 정확하게 순위를 매길 수 있는 선수의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 선수의 수는 1명 이상 100명 이하입니다. 경기 결과는 1개 이상 4,500개 이하입니다. results 배열 각 행 [A, B]는 A 선수가 B 선수를 이겼다는 의..

  • 6. 재사용성을 높이는 디자인 라이브러리나 이미 존재하는 코드를 이용하는 것은 재사용 전략의 절반일 뿐이다. 나머지 절반은 내가 작성하는 코드를 재사용할 수 있게 만드는 것이다. 잘 만들어진 라이브러리와 그렇지 않은 라이브러리에 어떤 차이가 있는지 아마도 경험했을 것이다. 잘 만들어진 라이브러리는 기분 좋은 편리함을 느끼게 해주지만 엉성하게 만들어진 라이브러리는 어떻게든 이용해보려는 노력에도 스트래스만 잔뜩 주다가 결국 내손으로 직접 만들게 된다. 다른 프로그래머의 사용을 의도해서 만든 라이브러리든 단순히 클래스 계층을 이루려는 것이든 간에 항상 코드 재사용을 염두에 두고 있어야 한다. 언제 어디서 비슷한 기능을 필요로 할지 모른다. 재사용성 있는 디자인은 객체지향 원칙을 기반으로 해서 몇 가지 새로운 ..

  • 5.5 추상화 추상화는 해당 클래스의 이용 방법, 즉, 인터페이스를 그 구현과 분리하는 것이다. 추상화는 앞서 살펴본 여러 가지 이유에서 바람직하다. 그리고 객체 지향 디자인의 기본적인 요소다. 5.5.1 인터페이스와 구현 추상화의 핵심은 구현에서 인터페이스를 분리해애는 데 있다. 구현은 목적하는 작업을 수행하도록 작성한 코드고, 인터페이스는 다른 사람이 그 코드를 이용할 떄 사용해야 하는 규약이다. C에서는 헤더 파일이 라이브러리에 포함된 함수 목록을 담고 있어서 인터페이스 역할을 했다. 객체지향 프로그래밍에서는 클래스의 접근 가능한 프로퍼티와 행동이 인터페이스 역할을 한다. 좋은 인터페이스는 공개된(public) 행동만으로 이루어진다. 프로퍼티와 값은 그 자체로는 공개되지 않고 게터와 세터에 의해 공..

  • 언리얼 내에서 피격처리를 좀더 객관화 하여, 추가적인 행동을 취해보자. 피격 시 애니메이션을 송출할 것이다. 우선, 피격 애니메이션을 정의할 몽타주를 새로 생성한다. 몽타주 생성 위와같이, Hit모션에 따른 몽타주를 새로 정의한다. 사망모션과 Hit모션을 둘다 만들어준다. 몽타주는 각각 Hit은 상체 또는 전신으로 동작하고, Dead는 전신으로 동작한다. 각 몽타주의 슬롯을 필요에 따라 원하는 위치에 정의해준다. 몽타주를 만들었으면, 이제 ABP에서 BP작업을 진행해준다. ABP연결하기 ABP_Enemy로 이동한다. 이미 전에 ABP_Player에서 했던대로, 새롭게 연결하여 정의해준다. 기본 애니메이션은, BS_SwordEnemy를 통해 재생되고, 해당 애니메이션을 기준으로, UpperBody, 그 이..

  • 문제 설명 출발지점부터 distance만큼 떨어진 곳에 도착지점이 있습니다. 그리고 그사이에는 바위들이 놓여있습니다. 바위 중 몇 개를 제거하려고 합니다. 예를 들어, 도착지점이 25만큼 떨어져 있고, 바위가 [2, 14, 11, 21, 17] 지점에 놓여있을 때 바위 2개를 제거하면 출발지점, 도착지점, 바위 간의 거리가 아래와 같습니다. 제거한 바위의 위치 각 바위 사이의 거리 거리의 최솟값 [21, 17] [2, 9, 3, 11] 2 [2, 21] [11, 3, 3, 8] 3 [2, 11] [14, 3, 4, 4] 3 [11, 21] [2, 12, 3, 8] 2 [2, 14] [11, 6, 4, 4] 4 위에서 구한 거리의 최솟값 중에 가장 큰 값은 4입니다. 출발지점부터 도착지점까지의 거리 dis..

  • 5.4 객체 간 관계 프로그래밍을 하다 보면 서로 다른 두 클래스가 공통적인 속성을 가지거나 서로 어떤 연관 관계가 있는 경우를 만나게 된다. 예를 들어 그림, 음악, 보관 목록의 문자를 모두 나타내는 미디어 객체가 너무 일반적이긴 하지만 이들 객체가 뭔가 공통적인 속성이 있는 것 만큼은 분명하다. 예를 들어 세 미디어 모두 최종 수정 날짜를 가질 수도 있고, 삭제하기 행동을 가질 수도 있다. 객체지향 언어는 객체 간 관계에 대응하기 위한 몇 가지 매커니즘을 지원한다. 여기서 어려운 부분은 실제로 그 관계가 무엇인가? 하는 부분으로 크게 has-a 관계와 is-a관계 두가지가 있다. 5.4.1 Has-A관계 A가 B를 가질 때 또는 A가 B를 포함할 때 A와 B는 has-a관계 또는 집합(aggregat..