728x90
반응형
숫자가 담긴 배열 absolutes
숫자의 개수(길이)가 담긴 배열 abolutes_len
숫자의 부호가 담긴 배열 signs
숫자의 부호 개수(길이)가 담긴 배열 signs_len
1. absoultes에 담긴 모든 숫자를 더함.
2. 부호를 판별해 fasle면 숫자를 음수로 변경하고 더함.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// absolutes_len은 배열 absolutes의 길이입니다.
// signs_len은 배열 signs의 길이입니다.
int solution(int absolutes[], size_t absolutes_len, bool signs[], size_t signs_len) {
int answer = 0;
for(int i = 0; i < absolutes_len; i++) {
if(signs[i] == false) {
absolutes[i] = (~absolutes[i])+1;
}
answer += absolutes[i];
}
return answer;
}
나는 2의 보수를 취하는 방법으로 연산을 했다. -7을 뒤집으면 -8 여기에 1을 더하면 -7이 되는 방법.
다른 분들의 해결방법을 보니,
아래와 같은 방법들을 썼더라. 역시 세상에 똑똑한 사람이 너무 많다.
answer += signs[i] ? absolutes[i] : -absolutes[i];
간결하다. 좋다.
다음 코드.
if (signs[i])
answer += absolutes[i];
else
answer -= absolutes[i];
부호가 음수면 숫자를 변형하지 않고 그 값을 빼버린다. 음. 똑똑해
다음 코드
absolutes[j] = absolutes[j] * (-1);
양수에 -1을 곱하니 음수가 된다. 처음알았다.
- 끝 -
728x90
반응형
'Programming language > 코딩테스트' 카테고리의 다른 글
코딩테스트 - 없는숫자 더하기, C언어 (0) | 2022.09.30 |
---|---|
코딩테스트-수박수박수박수?, 프로그래머스 코딩테스트 C버전 (1) | 2022.09.30 |
코딩테스트 - 번호가리기, C언어 (0) | 2022.09.29 |
코딩테스트 - 두 정수 사이의 합, C언어 (0) | 2022.09.29 |
코딩테스트 - 콜라츠 추측, Collatz, C언어 (0) | 2022.09.29 |