반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- JWT #토큰 #refreshToken #accessToken #Token #token #localStorage #sessionStorage
- react fragment
- 이친수
- rate limit
- React #리액트 이벤트 주기 #리액트 이벤트
- React #effect hook #useEffect
- raect typescript #react #typescript #styled-component
- #useRef #언제 쓰는데?
- useState #Hooks
- 플로이드 #c++
- 백준 #적록색약
- 코드스테이츠 #알고리즘 #그리디
- html entities
- 빡킹독
- React #Hook rules #Hook 규칙
- DP #c++
- 백준 #직각삼각형
- 얕은 복사 #깊은 복사 #shallow copy #deep copy
- React-Query
- react
- react #useCallback #react Hook
- 노마드 코더 #타입스크립트 #typescript #class
- npm #not being able to find a file #npm install Error
- 다익스트라 #파티 #백준
- 버블링 #갭쳐링 #이벤트 #JS
- axios
- donwstream #upstream #origin
- React #controlled component #비제어 컴포넌트 #제어 컴포넌트
- RateLimit
- interceptors
Archives
- Today
- Total
꿈꾸는 개발자
4153번 직각삼각형 C++ 본문
문제
과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.
입력
입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.
출력
각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.
접근법: 피타고라스 정리를 떠올리면 직각삼각형의 조건을 어렵지 않게 코드로 구현할 수 있을 것이다!
주의점: 처음 접근 할 때 예제의 입력값들이 오름차순이라 당연히 오름차순으로만 입력되겠지? 하며 코드를 작성하면
틀릴 수도 있다. 입력되는 변의 크기가 언제나 오름차순으로 주어지지 않을 가능성 또한 함께 고려해야 한다(이것을 고려 하지 않아 몇 번이나 틀림.....)
#include<bits/stdc++.h>
using namespace std;
int main(void) {
int a, b, c;
while (1) {
cin >> a >> b >> c;
if (a == 0 && b == 0 && c == 0)break;
else {
if (a > b && a > c) {
if ((a * a) == ((b * b) + (c * c)))cout << "right" << "\n";
else cout << "wrong" << "\n";
}
else if (b > a && b > c) {
if ((b * b) == ((a * a) + (c * c)))cout << "right" << "\n";
else cout << "wrong" << "\n";
}
else if (c > a && c > b) {
if ((c * c) == ((b * b) + (a * a)))cout << "right" << "\n";
else cout << "wrong" << "\n";
}
}
}
}
노가다식 코드 내가 작성했지만 참 별로다......(몇 번 틀리고 나서 생각하는 걸 포기하고 작성했다.....반성)
다른 사람 코드:
#include <iostream>
using namespace std;
int main() {
while (1) {
int x, y, z;
int temp = 0;
cin >> x >> y >> z;
if (x == 0 && y == 0 && z == 0)
return 0;
if (x > y) {
temp = y;
y = x;
x = temp;
}
if (y > z) {
temp = z;
z = y;
y = temp;
}
if (z*z == x * x + y * y)
cout << "right\n";
else
cout << "wrong\n";
}
}
이렇게 애초에 swap을 사용해 입력된 각 변을 오름차순으로 정렬하는 것이 더 좋아보인다. 가능하면 STL swap 함수를 사용한다면, 코드 길이 줄어들고 가독성도 더 좋아질 것이다!