디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

68. Text Justification

ㅇㅇ(12.50) 2023.01.08 06:20:16
조회 36 추천 0 댓글 0
														

코테 출제회사: Google, LinkedIn


https://leetcode.com/problems/text-justification/description/




string addSpaces(int cnt){
    return std::string(cnt, ' '); // char
}

// Greedily try to go as far right as possible until we fill our current line
pair<int,int> findRight(vector<string>& words, int maxWidth, int l){
    int wLen = words[l].size(); // sum of lengths of words from l to r. + default whitespaces
    int n = words.size(), r = l+1;
   
    while(r < n && wLen + 1+words[r].size() <= maxWidth){
        wLen += 1+words[r].size(); // +1 for default whitespace
        r++;
    }
    return {r-1, wLen};
}

string makeLine( vector<string>& words, int maxWidth, int l, int r, int wLen){
    int n = words.size(), spaces = maxWidth-wLen; // EXTRA whitespaces needed
   
    if(l == r) return words[l] + addSpaces(spaces);
   
    string line = "";
    bool isLast = (r == n-1);
   
    // Split EXTRA spaces. In between r-l+1 words, there are r-l spaces
    auto [q, rem] = std::div(spaces, r-l);
   
    for(int i=l; i< r; i++){
        line += words[i];
        line += " ";
       
        if(!isLast){
            line += addSpaces(q);
            if(rem > 0) line += " ";  // evenly distribute remaining spaces
            rem--;
        }
    }
    line += words[r];
    if(isLast) line += addSpaces(spaces); // left justify
   
    return line;
}

vector<string> Solution::fullJustify( vector<string>& words, int maxWidth) {
    int n = words.size(), l=0, r=0;
    vector<string> ans;
   
    while(l < n){
        auto [r, wLen] = findRight( words, maxWidth, l);
        string line = makeLine( words, maxWidth, l, r, wLen);
        ans.push_back( line);
        l = r+1;
    }
    return ans;
}


추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 2025년 가장 기억에 남는 인터넷 이슈는? 운영자 25/12/22 - -
333 3355. Zero Array Transformation I 흑화뉴비갤로그로 이동합니다. 05.20 50 0
332 2918. Minimum Equal Sum of Two Arrays Af 흑화뉴비갤로그로 이동합니다. 05.10 21 0
331 2033. Minimum Operations to Make a Uni-V 흑화뉴비갤로그로 이동합니다. 03.28 45 0
330 2401. Longest Nice Subarray 흑화뉴비갤로그로 이동합니다. 03.19 37 0
329 1079. Letter Tile Possibilities 흑화뉴비갤로그로 이동합니다. 02.18 44 0
328 1718. Construct the Lexicographically La 흑화뉴비갤로그로 이동합니다. 02.16 26 0
327 1910. Remove All Occurrences of a Substr 흑화뉴비갤로그로 이동합니다. 02.11 28 0
326 2381. Shifting Letters II 흑화뉴비갤로그로 이동합니다. 01.05 42 0
323 2471. Minimum Number of Operations to So 흑화뉴비갤로그로 이동합니다. 24.12.25 30 0
322 773. Sliding Puzzle 흑화뉴비갤로그로 이동합니다. 24.11.27 30 0
321 3243. Shortest Distance After Road Addit 흑화뉴비갤로그로 이동합니다. 24.11.27 23 0
320 1233. Remove Sub-Folders from the Filesy 흑화뉴비갤로그로 이동합니다. 24.10.29 29 0
319 2684. Maximum Number of Moves in a Grid 흑화뉴비갤로그로 이동합니다. 24.10.29 29 0
318 2501. Longest Square Streak in an Array 흑화뉴비갤로그로 이동합니다. 24.10.29 42 0
317 3043. Find the Length of the Longest Com 흑화뉴비갤로그로 이동합니다. 24.09.24 38 0
316 1514. Path with Maximum Probability 흑화뉴비갤로그로 이동합니다. 24.08.27 37 0
315 264. Ugly Number II 흑화뉴비갤로그로 이동합니다. 24.08.19 34 0
314 2285. Maximum Total Importance of Roads 흑화뉴비갤로그로 이동합니다. 24.06.28 46 0
313 1552. Magnetic Force Between Two Balls 흑화뉴비갤로그로 이동합니다. 24.06.20 37 0
312 1482. Minimum Number of Days to Make m B 흑화뉴비갤로그로 이동합니다. 24.06.19 40 0
311 523. Continuous Subarray Sum 흑화뉴비갤로그로 이동합니다. 24.06.09 41 0
310 리트코드 갤러리 5월 이벤트 우승자 공지 [1] 진척갤로그로 이동합니다. 24.06.08 63 0
309 1208. Get Equal Substrings Within Budget 흑화뉴비갤로그로 이동합니다. 24.05.28 38 0
308 1608. Special Array With X Elements Grea 흑화뉴비갤로그로 이동합니다. 24.05.28 30 0
307 552. Student Attendance Record II 흑화뉴비갤로그로 이동합니다. 24.05.28 31 0
306 2597. The Number of Beautiful Subsets [1] 흑화뉴비갤로그로 이동합니다. 24.05.24 54 0
305 78. Subsets 흑화뉴비갤로그로 이동합니다. 24.05.21 31 0
304 1863. Sum of All Subset XOR Totals 흑화뉴비갤로그로 이동합니다. 24.05.21 36 0
302 1325. Delete Leaves With a Given Value 흑화뉴비갤로그로 이동합니다. 24.05.18 35 0
301 2331. Evaluate Boolean Binary Tree 흑화뉴비갤로그로 이동합니다. 24.05.18 27 0
298 3075. Maximize Happiness of Selected Chi 흑화뉴비갤로그로 이동합니다. 24.05.12 23 0
297 786. K-th Smallest Prime Fraction 흑화뉴비갤로그로 이동합니다. 24.05.12 28 0
296 506. Relative Ranks 흑화뉴비갤로그로 이동합니다. 24.05.08 37 0
295 2816. Double a Number Represented as a L 흑화뉴비갤로그로 이동합니다. 24.05.08 23 0
294 2487. Remove Nodes From Linked List 흑화뉴비갤로그로 이동합니다. 24.05.06 25 0
293 79. Word Search o오어o(14.37) 24.05.04 28 0
292 45. Jump Game II o오어o(14.37) 24.05.04 33 0
291 881. Boats to Save People o오어o(14.37) 24.05.04 28 0
290 2441. Largest Positive Integer That Exis 흑화뉴비갤로그로 이동합니다. 24.05.02 27 0
289 2997. Minimum Number of Operations to Ma 흑화뉴비갤로그로 이동합니다. 24.05.01 24 0
288 2000. Reverse Prefix of Word 흑화뉴비갤로그로 이동합니다. 24.05.01 34 0
287 리트코드 갤러리 5월 이벤트 공지 [3] 진척갤로그로 이동합니다. 24.04.28 96 0
282 백준 1260. DFS와 BFS 차근차근춘식이(211.234) 24.04.23 45 0
277 206. Reverse Linked List 흑화뉴비갤로그로 이동합니다. 24.03.21 46 0
276 1669. Merge In Between Linked Lists 흑화뉴비갤로그로 이동합니다. 24.03.20 29 0
275 57. Insert Interval 흑화뉴비갤로그로 이동합니다. 24.03.18 30 0
274 2485. Find the Pivot Integer 흑화뉴비갤로그로 이동합니다. 24.03.13 24 0
273 1750. Minimum Length of String After Del 흑화뉴비갤로그로 이동합니다. 24.03.06 25 0
272 451. Sort Characters By Frequency 흑화뉴비갤로그로 이동합니다. 24.02.07 40 0
271 49. Group Anagrams 흑화뉴비갤로그로 이동합니다. 24.02.06 33 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2