코테 기록

leetcode 1221. Split a String in Balanced Strings 자바 코드

배성인 2023. 5. 8. 13:55

균형잡힌 문자열이 하나 주어짐

R과L로 균형잡힌 문자열을 몇개 낼 수 있는지 구하는 문제

그리디 알고리즘 썼음

 

작성한 코드

class Solution {
    public static int calculater(String s) {
        int count = 0;
        int balance = 0;
        int cal = 0;
        for (char c :s.toCharArray()) {
            if(c == 'R') {
                cal = 1;
            } else {
                cal = -1;
            }
            balance += cal;

            if(balance == 0) {
                count ++;
            }

        }
        return count;
    }
}

 

테스트코드

import org.junit.jupiter.api.*;

import static org.assertj.core.api.Assertions.*;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class SolutionTest {
    Solution solution;

    @BeforeAll
    void 세팅() {
        solution = new Solution();
    }
    @Test
    @Order(1)
    void 테스트케이스1() {
        assertThat(solution.calculater("RLRRLLRLRL")).isEqualTo(4);
    }
    @Test
    @Order(2)
    void 테스트케이스2() {
        assertThat(solution.calculater("RLRRRLLRLL")).isEqualTo(2);
    }
    @Test
    @Order(3)
    void 테스트케이스3() {
        assertThat(solution.calculater("LLLLRRRR")).isEqualTo(1);
    }

}