[Algorithm] 3주차 3번 문제

김상웅·2022년 6월 24일
0

✅ 문제


주어진 숫자 배열에서, 0을 배열의 마지막쪽으로 이동시키는 프로그램을 작성해주세요.

원래 있던 숫자의 순서는 바꾸지 말아주세요.

새로운 배열을 생성해서는 안 됩니다.

Input: [0,1,0,3,12]
Output: [1,3,12,0,0]


📌 풀이


우선 문제 분석을 하면 다음과 같습니다.

배열 내의 있는 0의 위치로 그 뒤에 있는 숫자를 가져오는 것입니다.

index는 0부터 시작합니다.

배열의 index 값이 0이 아닌 다른 숫자라면 앞에 0이 있는 위치로 값을 바꾸어 주고,
앞의 0의 위치를 바꾼 숫자의 자리로 위치를 바꾸어줍니다.

코드를 통해 알아보겠습니다:

def answer(nums):
	position = 0
  
	for i in range(len(nums)):
    	if nums[i] != 0:
      	temp = nums[i]
      	nums[i] = nums[position]
      	nums[position] = temp

      	position += 1

  	return nums

temp에 0이 아닌 숫자를 넣어줍니다.
0이 아닌 숫자의 자리에 nums[position] = 0 을 넣어줍니다.
nums[positino]= 0 자리에는 다시 temp를 넣어서 위치를 바꾸어줍니다.

profile
누구나 이해할 수 있도록

0개의 댓글