코린이의 소소한 공부노트

[LeetCode/Medium] 1769. Minimum Number of Operations to Move All Balls to Each Box 본문

코딩테스트 풀이/JAVA

[LeetCode/Medium] 1769. Minimum Number of Operations to Move All Balls to Each Box

무지맘 2022. 8. 17. 16:22

1. Input

1) 길이가 n인 2진수 문자열을 담고 있는 String 변수 boxes

2) boxes는 n개의 box로 구성되어 있다고 가정

3) i번째 box가 비어있다면 boxes[i] == '0'

4) i번째 box에 공이 1개 있다면 boxes[i] == '0'

 

2. Output

1) 길이가 n인 int 배열 answer

2) answer[i]  == 모든 공을 i번째 box로 옮기는 데 필요한 최소 횟수

3) 한 번에 1개의 공을 옮길 수 있음

4) i번째 공은 j번째로만 옮길 수 있음(abs(i - j) == 1)

5) 옮기다보면 i번째 box에는 2개 이상의 공이 들어갈 수 있음

6) boxes의 초기값을 고려해서 answer를 계산해야함

 

3. Constraint

1) n == boxes.length

2) 1 <= n <= 2000

3) boxes[i] == '0' or '1'

 

4. Example

Input: boxes = "110"

Output: answer = {1,1,3}

설명:

  - 모두 0번째로 옮기기: i=1에서 i=0으로 1회("200")

  - 모두 1번째로 옮기기: i=0에서 i=1로 1회("020")

  - 모두 2번째로 옮기기:  i=0에서 i=1로 1회("020"), i=1에서 i=2으로 2회("021" -> "002")

 

5. Code

int[] answer = new int[boxes.length()];
for(int i=0 ; i<answer.length ; i++){
    for(int j=0 ; j<answer.length ; j++){
        if(i!=j && boxes.charAt(j)=='1')
            answer[i] += Math.abs(i-j);
    }
}
return answer;