티스토리 뷰
문제
leetcode.com/explore/learn/card/fun-with-arrays/511/in-place-operations/3157/
Input: [0,1,0,3,12] Output: [1,3,12,0,0]
조건
- You must do this in-place without making a copy of the array.
- Minimize the total number of operations.
문제해설
0이 무작위로 섞여있는 배열에서 0은 뒤로 몰아 빼는 문제이다.
중요한건 조건 1처럼 또 다른 배열을 만들어 결과로 반영시키면 안되고, 주어진 배열 그대로 그 배열을 변형시켜야 한다.
정답코드
nums = [0, 1, 0, 3, 12]
n = len(nums)
notZeroCount = 0
for i in range(n):
if nums[i] != 0:
nums[notZeroCount] = nums[i]
notZeroCount += 1
while notZeroCount < n:
nums[notZeroCount] = 0
notZeroCount += 1
print(nums) #[1, 3, 12, 0, 0]
가독성 좋게 임의의 예시를 적어두었다.
1. 우선 입력받은 배열의 길이를 n에 대입
2. 첫번째부터 0이 아닌 수로 채우기 위해 0이 아닌 수를 세기 위한 변수 notZeroCount 지정.
3. 받아온 배열을 처음부터 돌면서 해당 길이의 배열 요소가 0이 아니라면 처음부터 순서대로 숫자로 채운다.
4. 채워지면 다음 요소를 위해 notZeroCount에 1을 더한다.
5. for문이 끝나면 나머지 요소들을 0으로 채우기 위해 notZeroCount부터 처음에 받아온 배열의 길이까지 0으로 채운다.
간만에 깔끔하게 이해 한 문제다.
처음에 조건 1번 생각을 못하고 새로운 배열들을 만들어 코드를 짜고 nums에 복붙했는데 답이 안나왔다.
참고
반응형
'Basic_Studies > 알고리즘 문제풀이' 카테고리의 다른 글
[파이썬] 백준 - 1931: 회의실 배정 (0) | 2021.01.29 |
---|---|
[파이썬] 백준 - 10610: 30 (0) | 2021.01.28 |
[파이썬] 백준 - 2875: 대회 or 인턴 (0) | 2021.01.28 |
[파이썬] 백준 - 11047: 동전0 (0) | 2021.01.27 |
[파이썬] <구현> 별찍기 정복 (BOJ-2438 외 9문제) (0) | 2021.01.22 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 파이썬 크롤링
- NextJS
- 리액트
- 리액트 파라미터 넘기기
- bs4 크롤링
- 리액트 컴포넌트
- dvd 효과
- nextjs 파라미터 넘기기
- Til
- css marquee
- 글래스모피즘 구현
- react router
- 움직이는 글래스모피즘
- 파이썬 flask
- 리액트 라우터
- css 글래스모피즘
- 화이팅
- 파이썬 정렬
- 10989 파이썬
- 자바스크립트
- 글래스모피즘 애니메이션 구현
- 리액트 스크롤
- nuxt 공식문서 한글
- next.js 리다이렉트
- 백준 10989 파이썬
- nuxt 공식문서
- getserversideprops redirect
- 카페음료테스트
- nextjs 스크롤
- vscode venv
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함