ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 66. Plus One
    릿코드(LEETCODE) 2020. 2. 7. 17:52
    반응형

    https://leetcode.com/problems/plus-one

    불러오는 중입니다...

     

    입력으로 들어오는 배열에서 마지막 자리수에 1을 더한값을 출력 하는 문제.

    마지막 글자가 9 인 경우 10이 됨으로 올림을 해줘야 한다.

     

    reverse 를 사용하여 배열의 요소를 반대로 돌리고 올림이 생기면 계속 추가 해주는 식으로 풀이

     

    vector<int> plusOne(vector<int>& digits) {
    
    	// 리버스를 사용하여 배열을 뒤집는다.
    	reverse(digits.begin(), digits.end());
    
    	bool first = true; // 처음 1회 마지막 요소에 덧셈을 하기 위한 flag
    	bool up = false;
    	for (int i = 0; i < digits.size(); i++) {
    		
    		int cand = digits[i];
    		if (first) {
    			// 마지막 요소에 +1 해주고 first flag 를 false 를 한다.
    			cand = cand + 1;
    			first = false;
    		}
    
    		if (up) {
    			cand++;
    			up = false;
    		}
    
    		if (cand == 10) {
    			// cand 의 값이 10 라면 현재 요소를 0 으로 초기화 한다.
    			digits[i] = 0;
    			up = true; // 올림이 생겼음으로 up 변수를 true 로 설정하고 다음 element 요소에 +1 할 수 있도록 준비
    		}
    		else {
    			digits[i] = cand;
    		}
    	}
    
    	// 배열의 요소를 모두 순회 하고나서도 up true 인 경우 마지막 요소를 추가 해준다.
    	if (up) {
    		digits.push_back(1);
    	}
    	reverse(digits.begin(), digits.end());
    
    	return digits;
    }

     

     

    반응형

    '릿코드(LEETCODE)' 카테고리의 다른 글

    213. House Robber II  (0) 2020.02.08
    198. House Robber  (0) 2020.02.08
    290. Word Pattern  (0) 2020.02.07
    258. Add Digits  (0) 2020.02.07
    1317. Convert Integer to the Sum of Two No-Zero Integers  (2) 2020.02.07

    댓글

Designed by Tistory.