문제
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/76501
수도코드 작성
signs 가 true 일 때는 양수로 absolute를 다시 만들고
signs 가 false 일 때는 음수로 absolute를 만들어서
마지막에 더 해주면 될 것 같았다.
작성한 코드
class Solution {
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
String[] signs0 = new String[signs.length];
String[] num = new String[absolutes.length];
for(int i=0; i<signs.length; i++) {
if(signs[i] == true){
signs0[i] = "+";
}
else {
signs0[i] = "-";
}
}
for(int i=0; i< absolutes.length; i++){
num[i] = signs0[i].concat(Integer.toString(absolutes[i]));
answer += Integer.parseInt(num[i]);
}
return answer;
}
}
처음에는 signs를 굳이 String으로 변환해서 +,- 로 바꿔주는 작업을 하고 그리고 signs0 + absolutes 를 합쳐주는 작업을 했다. 그리고 answer 를 구해서 사실 너무 비효율적인 코드인 것 같았다.
그래서 조건연산자를 이용해서 효율적으로 바꿔보았다.
class Solution {
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
for (int i = 0; i < signs.length; i++) {
answer += (signs[i] ? absolutes[i] : absolutes[i] * -1);
}
return answer;
}
}
보완할 점 / 헷갈린 점
조건연산자에 대해서 알고는 있었지만 써본 적은 딱히 없었다. 이번에 사용하게 되서 공부가 더 된 것 같다.