2023. 9. 24. 12:17, 알고리즘/프로그래머스
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 로 사용할 수 있게 되었다고 한다.
뭔가 파이썬처럼 쉽게 쓸수있게 된 부분이 있는것 같지만, 한동안은 계속 &&와 ||을 사용해서 작성하도록 하자.
다른 사람의 코드를 볼때나, 혹은 내 코드를 다른 사람이 볼때 서로 많이 통용되는 형태로 작성하기 위해서 &&와 || 을 주로 사용하도록 하자
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| Lv 0. 암호 해독 (0) | 2023.09.25 |
|---|---|
| Lv 0. 가까운 수 - pair 에 emplace_back()을 쓰고 싶다면, {a,b}를 넣는대신 (a,b) 형태로 넣자. (0) | 2023.09.25 |
| Lv 0. 중복된 문자 제거 (0) | 2023.09.24 |
| Lv 0. 배열 원소의 길이 (0) | 2023.09.24 |
| Lv 0. 컨트롤 제트 (0) | 2023.09.24 |
Comments, Trackbacks
