반응형
문제
Final Value of Variable After Performing Operations - LeetCode
문제 해결 방법
- 전위연산자와 후위연산자를 주는것은 함정입니다.
- 이 문제는 스트링을 비교하는것과 숫자를 비교하는데 차이점을 알고 있느냐고 묻는 문제입니다.
- 하지만 이와 동시에 여러가지 최적화할 여지를 남겨두었기에 유저가 최적화를 얼마나 할수 있는지, 논리적으로 얼마나 할수있는지 시험하는 문제이기도 합니다.
- 기본적으로 자바에서 스트링을 비교할떄는 반드시 equal을 써야합니다.
- 문제에서는 피라미터가 반드시 "++X", "X++", "--X", or "X--" 중 하나라고 말했기 때문에 굳이 equalsIgnoreCase같은 메서드를 사용할 필요가 없다.
- 여기서 조금더 최적화를 하자면, 전부 비교를 할 필요가 없이 두번째 글자가 ‘+’인지 ‘-’인지 구분만 하면 더할지 뺼지 구분할수 있다.
- 아주 단순한 if문이기 떄문에 물음표 연산자로 더욱 코드를 줄일수 있다.
- 자바의 물음표 연산자(?:)란
- 물음표 연산자를 사용할경우, 비교하는것은 char 타입이기 떄문에, 이는 equal메서드를 사용할 필요가 없습니다. char은 primitive type이고, String은 reference type이기 때문입니다.
- 자바의 Primitive 데이터 타입과 Reference 데이터 타입
Github Link
시간복잡도: O(n), 공간복잡도: O(1)
/**
* 연산들을 수행한 후 최종 결과값을 계산합니다.
*
* @param operations 수행할 연산들을 나타내는 문자열 배열입니다.
* 각 문자열은 단일 문자 ('+' 또는 '-') 다음에 'X'가 오는 형태입니다.
* @return 연산을 수행한 후의 최종 결과값입니다. '+' 연산에 대해 1을 더하고 '-' 연산에 대해 1을 뺀 값을 계산하여 반환합니다.
*/
public int finalValueAfterOperations(String[] operations) {
int result = 0;
for (String str : operations) {
// 문자열의 두 번째 문자를 확인하여 연산 유형을 판별합니다.
// '+'인 경우 결과값에 1을 더하고, 그 외의 경우에는 1을 빼줍니다.
result += str.charAt(1) == '+' ? 1 : -1;
}
return result;
}
반응형
'old > Algorithm Solving' 카테고리의 다른 글
LeetCode 215. Kth Largest Element in an Array 자바 문제 풀이 (0) | 2023.06.22 |
---|---|
LeetCode 1108. Defanging an IP Address 자바 문제 풀이 (0) | 2023.06.18 |
LeetCode 169. Majority Element 문제 풀이 (0) | 2023.05.18 |
136. Single Number 문제의 자바 해결 방법: 효율적인 알고리즘 (0) | 2023.05.09 |
118. Pascal's Triangle 문제의 자바 해결 방법: 효율적인 알고리즘 (0) | 2023.05.08 |