코린이의 소소한 공부노트

[LeetCode/Easy] 806. Number of Lines To Write String 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 806. Number of Lines To Write String

무지맘 2022. 12. 7. 18:32

1. Input

1) 문자열 s

2) int 배열 widths

3) widths[0]a의 가로 픽셀을, widths[25]z의 가로 픽셀을 나타낸다.

 

2. Output

1) 한 줄에 100 픽셀씩 쓸 수 있을 때, s에 있는 문자열을 순서대로 출력할 때 필요한 줄의 수와 마지막 줄의 픽셀 수를 순서대로 담은 int 배열

 

3. Constraint

1) widths.length == 26

2) 2 <= widths[i] <= 10

3) 1 <= s.length <= 1000

4) s는 영어 소문자로만 이루어져 있다.

 

4. Example

Input: widths = {4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10}, s = "bbbcccdddaaa" -> Output: {2,4]

설명: widths에 맞게 s를 출력해보면

bbbcccdddaa // 98 픽셀

a                        // 4 픽셀

2줄에 걸쳐 출력했고, 마지막 줄은 4픽셀을 차지하므로 {2, 4}를 반환한다.

 

5. Code

1) 첫 코드(2022/07/05)

int sum = 0;
int count = 1;
for(int i=0 ; i<s.length() ; i++){
    int c = s.charAt(i) - 97;
    if(sum + widths[c] <= 100)
        sum += widths[c];
    else{
        count++;
        sum = widths[c];
    }
} // for i

return new int[] {count, sum};