프로그래밍 공부

2024/01/17 5

  • 문제 설명 n개의 노드가 있는 그래프가 있다. 각 노드는 1부터 n까지 번호가 적혀있다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 한다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미한다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성하라. 제한사항 노드의 개수 n은 2 이상 20,000 이하입니다. 간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다. (vertex 배열 각 행 [a, b]는 a번 노드와 b번 노드 사이에 간선이 있다는 의미) 입출력 예 n vertex return 6..

  • 상태머신을 통해 점프 애니메이션을 적용해보자. ABP에 들어가서 AnimGraph를 수정하자. 상태머신 내부로 들어가면 위와같은 창에서 에니메이션을 수정할 수 있게 되는데, 애니메이션을 드래그해서 블럭을 만들고,블럭의 외부에 드래그해서 위와같이 연결한다. 위의 좌우 교차된 화살표는 IF문이다. 어떠한 조건에 해당되면 화살표 방향으로 애니메이션을 전환해준다. 점프에 사용될 데이터는 InAir인지 아닌지 확인하는 bool타입 변수를 사용한다. Bool타입 변수 제작 위와같이 현재 담당된 Player에 대해 InAir를 가져올 수 있다. 만약, 떨어지고 있다면, 현재 객채가 공중에 있다는 의미 임으로, InAir를 True로 전환하고, 아니라면 False로 변환해준다. 해당 Valid는 블루프린트가 업데이트 ..

  • 3.5 스타일이 있는 언어의 활용 C++언어는 잘못 활용하면 도저히 사람이 알아볼 수 없는 해괴한 코드를 만들 수 있다. i++ + ++i; 위 코드는 어떤식으로 동작하는지 C++표준에 정해져 있지 않다. i++가 변수 i를 이용하면서, 그 값을 증가시키는 부가 효과가 있기 때문이다. 표준에서는 문장 실행 중에 결과값(i + 1) 리턴과 함께 변수 자체의 값 증가까지 완료해야 하는지 정하고 있지 않다. 변수 자체의 값 증가는 문장의 끝인 ; 이후에 반영되어도 된다. 이때문에 ++i에서 어떤 i값이 사용될지 알 수 없다. 따라서 이 코드의 결과는 어떤 컴파일러를 사용하느냐에 따라 달라진다. a[i] = i++; 이 코드도 마찬가지 이유에서 결과가 어떻게 될지 알 수 없다. 이러한 코드의 사용은 피해야 한다..

  • 3.4.2 네이밍 컨벤션 이름을 정하는 데 많은 시간이나 상상력이 꼭 필요한 것은 아니다. 일반적인 경우에 쉽게 적용할 수 있는 표준적인 네이밍 방법이 있으면 편리하다. 3.4.2.1 카운터 프로그래밍을 시작할 때 많은 코드에서 i를 반복문의 카운터 변수로 활용하는것 을 보았을 것이다. 습관적으로 변수 i와 j를 각각 바깥 루프와 안쪽 루프의 카운터 변수로 사용할 수 있다. 하지만 중첩된 루프에서는 i와 j의 형상이 비슷함으로 변수를 혼동하기 쉽다. 그럼으로, 좀더 명확한 이름을 사용하고 루프 변수에 i와 j를 쓰는게 별로 좋지 않을 수 있다. 3.4.2.2 접두사 많은 프로그래머가 변수명을 정할 때 변수의 타입이나 사용법을 암시하는 접두사를 붙인다. 그런데 마찬가지라 많은 수의 프로그래머가 유지보수 문..

  • 3.4 네이밍 컴파일러는 몇 가지 네이밍 원칙을 가지고 있다. 이름이 숫자로 시작할 수는 없다. 밑줄이 두개로 된 이름이나(예:my__name) 밑줄로 시작하는 이름(예:_Name)도 사용해서는 안된다. 이런 이름들은 컴파일러가 자체적으로 사용하거나 표준 라이브러리 에서 사용하기 위해 예약되어있다. 이런 경우를 제외하면 이름은 순전히 나 자신과 내가 작성한 모듈을 이용할 동료 프로그래머를 돕기 위해 존재한다. 이러한 재경에 비추어 보았을 때 아무런 의미가 없거나 엉뚱한 오해를 불러일으키는 이름을 사용하는 경우가 너무나 많다는 데 안타까움을 금할 수 없다. 3.4.1 좋은 이름의 선택 변수, 메서드, 함수, 클래스는 그것의 목적을 정확히 설명해줄 수 있는 이름을 가지는 것이 가장 좋다. 부가적으로 타입이나..