본문 바로가기

분류 전체보기

(56)
[백준] 1005번 ACM Craft [C++] https://www.acmicpc.net/problem/1005 문제 접근 방법 위의 그림을 예시로 들어 설명하자면 , 3번을 짓기 위해서는 1번이 선행적으로 건설이 되어 있어야 한다. 이러 한 경우에 3번까지 짓는데 걸리는 시간은 1번을 짓는데 걸리는 시간+3번을 짓는데 걸리는 시간이 된다. 4번을 짓기 위해서는 2번과 3번이 선행적으로 건설이 되어 있어야 한다. 여기서 2번을 짓는데까지 걸리는 시간과, 3번을 짓는데까지 걸리는 시간이 다를텐데, 두개 다 완성이 되어야 4번 건설 시작이 가능하므로 둘 중 큰 값을 구해야 한다. 따라서 max(2번까지 걸리는 시간,3번까지 걸리는시간)에 4번을 짓는데 걸리는 시간이 4번까지 짓는데 걸리는 시간이다. 이러한 식으로 X번 건물을 지을 때 선행적으로 지어야 ..
[백준] 1167번 트리의 지름 [C++] https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 문제 접근 방법 트리의 지름이란 임의의 두 점 사이의 거리 중 가장 긴 것을 말한다. 먼저 이 두 점을 찾기위해서는 임의의 한 점에서 DFS를 해서 가장 멀리 있는 점을 찾아낸다. 그 점은, 내가 처음에 임의로 지정한 점이 지름에 포함되어있든, 아니든 지정한 점으로부터 가장 먼 거리에 있기 때문에, 트리의 지름에 포함된 점이라고 할 수있다. 이렇게 찾아낸 점에서 부터 다시 DFS를..
[유니티] 내 주변을 원 모양으로 퍼지는 탄환 생성 특정 오브젝트를 기준으로 원 모양으로 퍼지는 탄환을 생성하는 방법이다. int n = 10; int speed = 150; for(int i = 0; i
[백준] 2206번 벽 부수고 이동하기 [C++] https://www.acmicpc.net/problem/2206 문제 접근 방법 BFS를 통해 문제를 해결하였다. 중요한점은 벽을 부술 수 있는 경우가 딱 한번 있다는 점이다. 따라서 다른 BFS 문제들과 다르게 해당 경우가 벽을 부수고 들어간 경우인지, 아닌지를 구분을 해야한다. 벽을 부수고 들어간 경우일 때, 벽을 만나면 더 진행을 못하지만, 벽을 부수고 들어간 경우가 아니라면 벽을 만나도 한번 통과가 가능하다. 이러한 구분은 큐에 위치값(x,y)이외에도 큐에 들어온 경우가 벽을 부쉈는지, 아닌지 구분할 bool 변수까지 포함을 시키면 된다. 따라서 큐에서 상하좌우를 판별할때 벽을 이미 부수고 들어왔을 경우 상하좌우 벽을 부순 상황에서 한번도 방문을 안 했고, 벽이 아닐 때의 x,y값과 벽을 이미 ..
[백준] 1937번 욕심쟁이 판다 [C++] https://www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에 www.acmicpc.net 문제 접근 방법 판다는 기본적으로 현재 내 위치보다 대나무의 수가 적은곳에서 현재 위치로 이동이 된다. 주위에 현 위치 보다 대나무가 적은 곳이 없어서 현재 위치로 이동할 수 있는 경로가 없다면 그 곳으로 갈 수 있는 경로는 오직 그 위치에서 시작하는 경우 한 개이다. 따라서 위의 경우는 dp라는 array에 1이라는 값을 정해두고, 주위에 현 위치보다 대나무가 적은 곳이 있는 곳까지 ..
[유니티] 내 주변을 원 운동하는 오브젝트 만들기 더보기 간단한 코드 float circleR; //반지름 float deg; //각도 float objSpeed; //원운동 속도 void Update() { deg+= Time.deltaTime*objSpeed; if (deg < 360) { var rad = Mathf.Deg2Rad * (deg); var x = circleR * Mathf.Sin(rad); var y = circleR * Mathf.Cos(rad); YS[0].transform.position = transform.position + new Vector3(x, y); YS[0].transform.rotation = Quaternion.Euler(0, 0, deg * -1); //가운데를 바라보게 각도 조절 } else { deg =..
[백준] 1039번 교환 [C++] https://www.acmicpc.net/problem/1039 1039번: 교환 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. www.acmicpc.net 문제 접근 방법 BFS를 이용하여 문제를 해결하였다. 먼저 , 0번 교환했을 때의 초기 문장을 큐에 넣고, 그 안에서 각각의 자릿수를 교환한 문장을 만든후 큐에 넣어준후 팝 해준다. 그 후 1번 교환했을때의 문장들이 Q에 있으므로, 다시 자릿수를 교환한 후 큐에 넣어준 후 팝해준다. ...를 N번 교환까지 진행 해 준다. 큐에 넣을때 예외처리 해 줄 부분이 있는데 교환 한 후 문장의 맨 처음이 0일 때 문장의 길이가 1이여서 교환을 할 수 없을때 는 각각 "-1"을 ..
#2 스튜디오 #2 스튜디오 블로그입니다. 이메일 주소 : raetic@naver.com 깃허브 : https://github.com/raetic 이력서 : https://www.notion.so/d4690ac728194592a3f264b8519e8170 포트폴리오 : https://www.notion.so/8199b0a97ac5434cba98178cbe4d7c38 유니티 이용한 게임개발 & 알고리즘 문제 풀이 위주로 포스팅 할 것입니다 화이팅 !