Lv 0. 삼각형의 완성조건 (1)

https://school.programmers.co.kr/learn/courses/30/lessons/120889

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> sides) {
    sort(sides.begin(),sides.end());
    if(sides[2]<sides[0]+sides[1]) return 1;
    else return 2;
}

위가 내가 작성한 코드.

다른 사람의 풀이 보기에서 가장 처음에 올라와 있는 코드를 보니 내가 작성한 로직과는 똑같았는데, 삼항연산자를 사용해서 

조금 더 간결해보이게 작성한 코드가 있어서 첨부해본다. 하지만 큰 차이는 없다. 

삼항연산자 충분히 사용해볼만 했는데, 다음에는 한번 사용해보도록 하자. 

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> sides) {
    sort(sides.begin(),sides.end());
    return (sides[2] < sides[0]+sides[1])?1:2;
}

 

 

추가적으로, 

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> sides) {
    bool answer = (sides[0] + sides[1] > sides[2] and sides[1] + sides[2] > sides[0] and sides[2]+sides[0]>sides[1]);
    return -answer+2;
}

이 코드에서 bool answer 대입할때 괄호 안에 and 가 쓰였는데, 그동안 and는 보지를 못해서 이에 대해서 검색해보았다. 

`and`는 C++17부터 도입된 논리 연산자입니다. `and`는 논리 `&&` 연산자와 동일한 역할을 합니다. 

아래의 코드 라인에서 `and` 연산자가 사용되었습니다:

```cpp
bool answer = (sides[0] + sides[1] > sides[2] and sides[1] + sides[2] > sides[0] and sides[2] + sides[0] > sides[1]);
```

여기서 `and` 연산자는 논리 `&&`와 동일하게, 주어진 조건들이 모두 참인지를 확인하는 역할을 합니다. 

이 코드는 세 개의 조건을 모두 만족해야 `answer`에 `true`가 할당됩니다. 그리고 마지막에 `-answer + 2`를 

통해 결과를 반환하고 있습니다. 

C++17부터 `and`와 `or` 연산자가 도입되었으며, 이들은 논리 `&&`와 `||`와 동일한 역할을 합니다. 이를 통해 
코드를 더 가독성 있게 작성할 수 있습니다.

이와 같은 정보를 얻을 수 있었다. c++17 부터 &&를 and로, || 을 or 로 사용할 수 있게 되었다고 한다. 

뭔가 파이썬처럼 쉽게 쓸수있게 된 부분이 있는것 같지만, 한동안은 계속 &&와 ||을 사용해서 작성하도록 하자. 

다른 사람의 코드를 볼때나, 혹은 내 코드를 다른 사람이 볼때 서로 많이 통용되는 형태로 작성하기 위해서 &&와 || 을 주로 사용하도록 하자 

 

  Comments,     Trackbacks