๐Ÿฅž BE
home

75_Sort Colors

๋‹ด๋‹น์ž
์™„๋ฃŒ ์—ฌ๋ถ€
Solved
์š”์•ฝ
๋‚ ์งœ
2024/08/15
ํƒœ๊ทธ
์ •๋ ฌ
๋‚œ์ด๋„
Medium
์ถœ์ฒ˜
LeetCode

์ฝ”๋“œ

class Solution { public void sortColors(int[] nums) { int low = 0, mid = 0, high = nums.length - 1; while (mid <= high) { if (nums[mid] == 0) { // 0์„ ๋ฐœ๊ฒฌํ•˜๋ฉด low์™€ mid๋ฅผ swapํ•˜๊ณ  ๋‘˜ ๋‹ค ์ฆ๊ฐ€ int temp = nums[low]; nums[low] = nums[mid]; nums[mid] = temp; low++; mid++; } else if (nums[mid] == 1) { // 1์ด๋ฉด ๊ทธ๋ƒฅ mid ์ฆ๊ฐ€ mid++; } else if (nums[mid] == 2) { // 2๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด mid์™€ high๋ฅผ swapํ•˜๊ณ  high๋งŒ ๊ฐ์†Œ int temp = nums[mid]; nums[mid] = nums[high]; nums[high] = temp; high--; } } } }
Java
๋ณต์‚ฌ
1.
ํฌ์ธํ„ฐ:
โ€ข
low: 0 (red)์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
โ€ข
mid: ํ˜„์žฌ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
โ€ข
high: 2 (blue)์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
2.
์•Œ๊ณ ๋ฆฌ์ฆ˜:
mid ํฌ์ธํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ผ์•„ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ, ์„ธ ๊ฐ€์ง€ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ ์ ˆํžˆ ๊ฐ’์„ ๊ตํ™˜ํ•œ๋‹ค.
โ€ข
nums[mid] == 0: nums[mid] nums[low] ๊ตํ™˜, low์™€ mid๋ฅผ ์ฆ๊ฐ€
โ€ข
nums[mid] == 1: mid๋ฅผ ์ฆ๊ฐ€
โ€ข
nums[mid] == 2: nums[mid] nums[high] ๊ตํ™˜, high๋ฅผ ๊ฐ์†Œ
โ€ข
์ด ๊ณผ์ •์„ mid๊ฐ€ high๋ฅผ ๋„˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต

๋ฌธ์ œ ํ•ด๊ฒฐ ์•„์ด๋””์–ด

Dutch National Flag Problem์ด๋ผ๋Š” 3ํฌ์ธํ„ฐ ๊ตํ™˜ ๋ฐฉ์‹์˜ ๋ฌธ์ œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด ๋ฐฉ์‹์€ ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ œ์ž๋ฆฌ์—์„œ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. - ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n) - ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)