2021/10/31 일요일

Gong Intaek·2021년 10월 31일
0

일상

목록 보기
142/1031
post-thumbnail

TIL


오늘 한 일

  • 휴식
  • leetcode
    • Asteroid Collision. (medium)

문제 풀이

Asteroid Collision. (medium)

소행성들이 나열된 배열이 주어지고 이배열내에서 소행성들의 움직임을 확인하여 충돌 되는 대상을 제거하여 돌려주는 문제이다. 문제상에서 속도는 모두 동일, 배열내의 값은 소행성의 크기를 나타내고, 수의 부호는 움직이는 방향을 나타낸다.(+: 오른쪽 , -: 왼쪽)

충돌에 대한 판정은 사이즈가 큰쪽이 살아 남는것 이고, 같은 사이즈의 경우는 둘다 부서진다. 이에따라 풀이 방법을 생각해보았지만, 깔끔한 방식은 생각이 나지 않아 단순한 방식으로 문제를 풀이하였다.

배열내 인덱스를 나타낼 변수를 정의하고 해당 변수+1 의 값이 배열에서 벗어난 값일경우 반복을 종료하는 while 구문을 사용하였다. 그리고 충돌이 일어 나는 경우인 좌측 양수, 우측 음수인 케이스에 대해서 충돌 판정에 대한 조건문을 적용 하였다.

좌측이 살아남을경우 우측에 새로운 값이 들어오게 되니 인덱스의 변화는 없고, 우측이 살아남을경우 좌측이전의 값과의관계를 확인해야하므로 인덱스를 하나 감소 시킨다. 둘다 파괴될경우 좌측이전의 값의 인덱스로 돌아가야 하므로 인덱스 하나 감소를 하고 충돌이 없을때는 인덱스를 하나 증가 시켰다.

그리고 모든 반복이 끝난 경우 소행성 배열을 되돌려 준다.


오늘은...

휴식

profile
개발자가 되기위해 공부중

0개의 댓글