-
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