์›๋ณธ ๋ฌธ์ œ๋Š” ์ด๊ณณ์—์„œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


๊ฐ„๋žตํ•˜๊ฒŒ ํ•œ๊ธ€๋กœ ๋ฌธ์ œ๋ฅผ ๋ฒˆ์—ญํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.


int[]๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„์„œ 3 ๋ฐ”๋กœ ๋’ค์— 4๋ฅผ ์œ„์น˜ํ•˜๋„๋ก ์ •๋ ฌํ•œ ๋’ค ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

์ธ์ž๋กœ ๋“ค์–ด์˜จ int[]์—์„œ ์ˆซ์ž 3๊ณผ ์ˆซ์ž4์˜ ๊ฐœ์ˆ˜๋Š” ํ•ญ์ƒ ๋™์ผํ•˜๋ฉฐ, ์ˆซ์ž 3 ๋’ค์—๋Š” ํ•ญ์ƒ 3๊ณผ 4๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ˆ˜๊ฐ€ ๋“ค์–ด์˜ต๋‹ˆ๋‹ค. ์ˆซ์ž3์€ ์ •๋ ฌํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์ˆ˜ ๋“ค์€ ์œ„์น˜๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ฒซ ์ˆซ์ž 3์€ ํ•ญ์ƒ ์ˆซ์ž 4๋ณด๋‹ค ๋จผ์ € ์ถœํ˜„ํ•ฉ๋‹ˆ๋‹ค.


๋ณดํ†ต int[]๋ณด๋‹ค๋Š” Listํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•ด์ฃผ๋Š” api๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .

๊ทธ๋ž˜์„œ List๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์šฐ์„  int[] ๋ฅผ ๋ฃจํ”„๋ฅผ ๋Œ๋ ค์„œ (3 ์ด ์ถœํ˜„ํ•˜๋Š” ์œ„์น˜ + 1)๊ณผ (4์˜ ์œ„์น˜)๊ฐ€ ์–ด๋””์ธ์ง€๋ฅผ ๋‘๊ฐœ์˜ ArrayList์— ๋‚˜๋ˆ ์„œ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.

์–ด์ฐจํ”ผ 3๊ณผ 4์˜ ์ถœํ˜„ ๋นˆ๋„๊ฐ€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘๊ฐœ ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋Š” ํ•ญ์ƒ ๋™์ผํ•˜๊ฒ ์ฃ .

๊ทธ๋ ‡๊ฒŒ ๋ฃจํ”„๋ฅผ ํ•œ๋ฒˆ ๋Œ๋ฉด์„œ ์œ„์น˜์ •๋ณด๋ฅผ ๊ฐ–๊ณ ์žˆ๋‹ค๊ฐ€, ์œ„์น˜์ •๋ณด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฃจํ”„๋Œ๋ฉด์„œ ํ•ด๋‹น ์œ„์น˜์˜ ์ˆซ์ž๋“ค์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด์ฃ . ( 3์˜ ์œ„์น˜ +1 )์„ ์ €์žฅํ•˜๋Š” ์ด์œ ๋Š” 3 ๋ฐ”๋กœ ๋‹ค์Œ์˜ ์ˆซ์ž์™€ 4์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


์ €๋Š” ์—ฌ๊ธฐ์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‘๊ฐœ๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ๋ฆฌ์ŠคํŠธํ•˜๋‚˜์— ๋งต๊ฐ์ฒด๋ฅผ ๋„ฃ์–ด์„œ ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งต์—๋Š” ( 3์˜ ์œ„์น˜+1)๊ณผ 4์˜ ์œ„์น˜๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒ ์ฃ .


public int[] fix34(int[] nums) {
  List<Integer> posOfFour = new ArrayList<Integer>();
  List<Integer> posOfThree = new ArrayList<Integer>();
  for ( int i = 0; i < nums.length; i++ ){
      if ( nums[i] == 4 ){
        posOfFour.add(i);
      }
      if ( nums[i] == 3 ){
         posOfThree.add(i+1);
      }
  }
  for ( int j = 0; j < posOfThree.size(); j++ ){
     int temp = nums[(int)posOfThree.get(j)];
     nums[(int)posOfThree.get(j)] = nums[(int)posOfFour.get(j)];
     nums[(int)posOfFour.get(j)] = temp;
  }
  return nums;
}